
java 字符串处理急急急。。java 怎么统计一串字符串在整个字符串中出现的次数..没有分了,大师们帮帮忙。
比如有这么一段字符串。。Stringstr="abcd";//这是我要找的字符串。StringallStr="asdasabcdf//:asdaeeeeeeabcdooo...
比如有这么一段字符串。。
String str = "abcd"; //这是我要找的字符串。
String allStr = "asdasabcdf //:asd
aeeeeeeabcdooooo
bvbgffg/abcd/dfsdf";
我要统计出在这个 allStr 中 str 出现过多少次。该怎么做?
我目前有个不成熟的思路,先把这个allStr 写入文件,然后我在读这个文件,每读一行(readLine()) 就判断一次。看这一行中包不包行str 。包含的话,变量++;但是这样比较复杂,字符串一大效率就下来了。
哪位大师有没有好办法。指导一下我这只又嫩又菜的呆鸟。。。。。 展开
String str = "abcd"; //这是我要找的字符串。
String allStr = "asdasabcdf //:asd
aeeeeeeabcdooooo
bvbgffg/abcd/dfsdf";
我要统计出在这个 allStr 中 str 出现过多少次。该怎么做?
我目前有个不成熟的思路,先把这个allStr 写入文件,然后我在读这个文件,每读一行(readLine()) 就判断一次。看这一行中包不包行str 。包含的话,变量++;但是这样比较复杂,字符串一大效率就下来了。
哪位大师有没有好办法。指导一下我这只又嫩又菜的呆鸟。。。。。 展开
2个回答
展开全部
上次写的,遍历一遍,算法效率 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
上次那个笨蛋没有采用,用了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
展开全部
看代码吧
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);
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);
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询