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); }
要效率的话那么就别用正则,正则效率不高。 如果是匹配字符串出现次数可以直接用indexOf(String str, int indexFrom)方法指导返回值小于0。 如果是单字char类型那么直接使用toCharArray()方法获取数组,然后遍历数组获取匹配数值。
int count = 0; int index = 0; while (true) { index = result.indexOf(target, index + 1); if (index > 0) { count++; } else { break; } } System.out.println(count);
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);
}
如果是匹配字符串出现次数可以直接用indexOf(String str, int indexFrom)方法指导返回值小于0。
如果是单字char类型那么直接使用toCharArray()方法获取数组,然后遍历数组获取匹配数值。
int index = 0;
while (true) {
index = result.indexOf(target, index + 1);
if (index > 0) {
count++;
} else {
break;
}
}
System.out.println(count);