[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
回复 5# 思想之翼
计算1列2000行 应该不需要22秒  一楼的意思应该是要匹配的字符总是第一位开始 是这样吗

TOP

根据所需,自行修改
  1. @if(0)==(0) echo off
  2. cscript -NoLogo -E:JScript %0 <a.txt
  3. pause&goto:eof
  4. @end
  5. function getRepeatedStr(s) {
  6.     var arr = [],res = {};
  7.     for (var i = 0; i < s.length; i++) {
  8.           arr[i] = i;
  9.     }
  10.     arr.sort(function compare(a, b) {
  11.         return s.substring(a).localeCompare(s.substring(b));
  12.     });
  13.     for (var i = 1; i < s.length; i++) {
  14.         var num = 0;
  15.         var si = arr[i];
  16.         var sj = arr[i-1];
  17.         while(s.charAt(si+num) == s.charAt(sj+num)) {
  18.             num++;
  19.             if (num>0) {
  20.                var tmp=s.substring(si, si+num)
  21.                res[tmp]=1+res[tmp]||1;
  22.                max = Math.max(max, res[tmp]);
  23.                min = Math.min(min, res[tmp]);
  24.             }
  25.         }
  26.     }
  27.     return res;
  28. }
  29. var text = WSH.StdIn.ReadAll().replace(/\r?\n/mg,'')
  30. var max = -1, min = Number.MAX_VALUE;
  31. var result = getRepeatedStr(text)
  32. var n = 4, arr=[], minarr=[], maxarr=[];
  33. for (var k in result) {
  34.       var i = result[k];
  35.       if (i == max) {
  36.          maxarr.push(k);
  37.       }
  38.       else if (i == min) {
  39.          minarr.push(k);
  40.       }
  41.       if (i== n) {
  42.           arr.push(k);
  43.       }
  44. }
  45. WSH.Echo('最小重复次数',min,'\n重复字符:',minarr.join('\n'))
  46. WSH.Echo('最大重复次数',max,'\n重复字符:',maxarr.join('\n'))
  47. WSH.Echo('指定重复次数',n,'\n重复字符:',arr.join('\n'))
复制代码
1

评分人数

TOP

返回列表