日期:2014-05-20  浏览次数:20662 次

【请教】计算字符串中子串出现的次数
本帖最后由 quickily 于 2013-03-28 15:31:31 编辑
如何计算字符串中子串出现的次数。
个人参考了几个方法,可最终结果都不理想.
以下的代码中,就有个问题,会将“aaa”当成两个“aa”
大家给个思路
import java.util.*;
public class Exer49 

public static void main(String args[])
{
Scanner s = new Scanner(System.in);
System.out.print("请输入字符串:");
String str1 = s.nextLine();
System.out.print("请输入子串:");
String str2 = s.nextLine();
int count=0; 
if(str1.equals("")||str2.equals("")) 

System.out.println("你没有输入字符串或子串,无法比较!"); 
System.exit(0);

else 

for(int i=0;i<=str1.length()-str2.length();i++) 

if(str2.equals(str1.substring(i, str2.length()+i))) 
//这种比法有问题,会把"aaa"看成有2个"aa"子串。 
{
count++; 
}

System.out.println("子串在字符串中出现: "+count+" 次"); 

}


------解决方案--------------------
引用:
第25行下面加上一句
i+= str2.length() - 1 ;


24行下面加上一句
i+= str2.length() - 1 ;