计算一个字符串中某个字符串出现次数
public static int strCount(String str, String s){ int count = 0; while(true){ if(str.indexOf(s) == -1){ break; } int temp = 0; temp = str.indexOf(s); str = str.substring(temp+s.length()); count ++; } return count; }调用
public static void main(String[] args) { //这是一整段蜀道难 String str = "噫吁嚱,危乎高哉!蜀道之难,难于上青天!蚕丛及鱼凫,开国何茫然!尔来四万八千岁,不与秦塞通人烟。西当太白有鸟道,可以横绝峨眉巅。地崩山摧壮士死,然后天梯石栈相钩连。上有六龙回日之高标,下有冲波逆折之回川。黄鹤之飞尚不得过,猿猱欲度愁攀援。青泥何盘盘,百步九折萦岩峦。扪参历井仰胁息,以手抚膺坐长叹。问君西游何时还?畏途巉岩不可攀。但见悲鸟号古木,雄飞雌从绕林间。又闻子规啼夜月,愁空山。蜀道之难,难于上青天,使人听此凋朱颜!连峰去天不盈尺,枯松倒挂倚绝壁。飞湍瀑流争喧豗,砯崖转石万壑雷。其险也如此,嗟尔远道之人胡为乎来哉!剑阁峥嵘而崔嵬,一夫当关,万夫莫开。所守或匪亲,化为狼与豺。朝避猛虎,夕避长蛇;磨牙吮血,杀人如麻。锦城虽云乐,不如早还家。蜀道之难,难于上青天,侧身西望长咨嗟!"; String s = "蜀道之难"; System.out.println(strCount(str,s)); }结果:3
算法原理: 设较长的字符串为A,小的字符串为B 每次执行循环就在串A中查找B,找不到则结束循环,返回0 如果找到B,计次+1,记录B出现的位置C; 截取字符串从C+B的长度开始截取(避免重复计次)截取到A的最后 重复执行,知道在A中找不到B为止