本帖最后由 u010932630 于 2014-11-23 23:07:00 编辑

解决方案 »

  1.   

    1. 正则表达式解决不了这个问题
    2. 这10万个字符是怎么存储的,存储在文件还是一次性放内存里
    3. 字符和出现次数的存储结构用 Map<Character, Integer>: Character是字符,Integer是出现的次数
    Map<Character, Integer> map = new TreeMap<Character, Integer>();// 统计的算法基本如下
    for (int i = 0; i < chars.length; ++i) {
        Character key = new Character(chars[i]);
        Integer count = map.get(key);
        map.put(key, (count == null) ? 0 : count + 1);
    }
      

  2.   

    要效率的话那么就别用正则,正则效率不高。
    如果是匹配字符串出现次数可以直接用indexOf(String str, int indexFrom)方法指导返回值小于0。
    如果是单字char类型那么直接使用toCharArray()方法获取数组,然后遍历数组获取匹配数值。
      

  3.   

    int count = 0;
    int index = 0;
    while (true) {
    index = result.indexOf(target, index + 1);
    if (index > 0) {
    count++;
    } else {
    break;
    }
    }
    System.out.println(count);
      

  4.   

    谢谢,KMP算法统计10M的文本为9MS,用indexOf统计为3MS。还有更快的吗?