题目:
现有如下文本:"Java语言是面向对象的,Java语言是健壮的,Java语言是安全的,Java是高性能的,Java语言是跨平台的"。请编写程序,统计该文本中"Java"一词出现的次数。
想法:
从左至右依次查找,将已查找的部分截取掉。
方法:
查找参数字符串str在调用方法的字符串中第一次出现的索引,如果不存在,返回-1
public int indexOf(String str)
截取字符串,从索引beginIndex(包含)开始到字符串的结尾
public String substring(int beginIndex)
代码:
1 public static void main(String[] args) { 2 // 8、在主方法中,定义字符串表示题目中的文本,定义字符串表示要查找的子串,调用方法,获取结果。 3 String s = "Java语言是面向对象的,Java语言是健壮的," + 4 "Java语言是安全的,Java是高性能的,Java语言是跨平台的"; 5 //方法一: 6 String b = "Java"; 7 System.out.println(search(s, b)); 8 //方法二:(简便算法) 9 //将java字符串用空字符串替换,然后计算前后长度,除以替换长度,得到个数 10 String javaNew = s.replace("Java", ""); 11 System.out.println(javaNew.toString()); 12 System.out.println((s.length()-javaNew.length())/b.length()); 13 } 14 15 // 1、定义方法,返回值int表示次数,参数列表两个字符串, 16 // 第一个表示在哪个字符串中查找,第二个表示要查找的目标子串 17 public static int search(String s, String b) { 18 //2、定义统计变量表示次数。 19 int count = 0; 20 //3、定义索引变量,表示每次找到子串出现的索引。 21 int index = 0; 22 //4、定义循环,判断条件为在字符串中找到了目标子串,使用indexOf实现。 23 while ((index = s.indexOf(b)) != -1) { 24 // 5、如果找到的索引不是-1,在循环中,统计变量累加。 25 count++; 26 // 6、把查找过的部分剪切掉,从找到的索引+子串长度的位置开始截取,使用substring实现。 27 s= s.substring(index +b.length()); 28 } 29 //7、将次数返回 30 return count; 31 }
原文:https://www.cnblogs.com/neojoker/p/10662852.html