java 字符串处理急急急。。java 怎么统计一串字符串在整个字符串中出现的次数..没有分了,大师们帮帮忙。

比如有这么一段字符串。。

String str = "abcd"; //这是我要找的字符串。
String allStr = "asdasabcdf //:asd
aeeeeeeabcdooooo
bvbgffg/abcd/dfsdf";

我要统计出在这个 allStr 中 str 出现过多少次。该怎么做?

我目前有个不成熟的思路,先把这个allStr 写入文件,然后我在读这个文件,每读一行(readLine()) 就判断一次。看这一行中包不包行str 。包含的话,变量++;但是这样比较复杂,字符串一大效率就下来了。

哪位大师有没有好办法。指导一下我这只又嫩又菜的呆鸟。。。。。

上次写的,遍历一遍,算法效率 O(n) 的解决方法。
上次那个笨蛋没有采用,用了split浪费空间的办法。
希望这次你有眼光。
============
如果仅仅是'aaa'这样“固定长度、固定内容”的模板是不需要正则的,
public class Test{
public static void main(String[] args) {
String s="aaabbbcccaaaasdffe";
System.out.println("出现次数:"+countOccurances(s, "aaa"));
}
static public int countOccurances(String s,String p){
int count=0, pos=0, len_s=s.length(),len_p=p.length();
while(pos<len_s && (pos=s.indexOf(p,pos))!=-1){
count++;
pos+=len_p;
}
return count;
}
}
======
输出:
出现次数:2
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-07-07
看代码吧
String str = "abcd"; //这是我要找的字符串。
String allStr = "asdasabcdf//:asd aeeeeeeabcdooooobvbgffg/abcd/dfsdf";
int sum = 0;
int index = 0;
while(true) {
index = allStr.indexOf( str, index);
if(index == -1) {
break;
}
sum++;
index += str.length();
}
System.out.println(sum);
相似回答