java 11-8 在大串中查找小串的案例

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java 11-8 在大串中查找小串的案例相关的知识,希望对你有一定的参考价值。


1、统计大串中小串出现的次数
  举例:
    在字符串"woaijavawozhenaijavawozhendeaijavawozhendehenaijavaxinbuxinwoaijavagun"
  结果:
    java出现了5次
  分析:
    1、首先已经知道字符串
      A:定义一个统计变量=0;
      B:在大串中查找小串是否存在,用 int indexOf(String str):返回指定字符在此字符串中第一次出现处的索引。
          a:如果返回的索引值是-1,则说明 大串中并不存在这个小串,输出统计变量
          b:返回的若不是-1,则是这个小串的第一个字符在大串中的索引,这个时候统计变量++
      C:从得到的索引开始,再加上小串的长度,到字符串的最后,开始截取一个新的字符串,再把这个字符串赋值给大串,替换之前的大串
        String substring(int start):从指定位置开始截取字符串,默认到末尾。
      D:再次从B开始循环,直到得到的新字符串没有了这个小串,也就是B中的a
  以上分析定义为一个方法,方法的两个要素:
      a:返回值:int
      b:参数列表:两个字符串,大串和小串

 1 public class StringTest3 {
 2 
 3 public static void main(String[] args) {
 4 //定义已知大串和小串
 5 String maxstring = "woaijavawozhenaijavawozhendeaijavawozhendehenaijavaxinbuxinwoaijavagun";
 6 String minstring = "java";
 7 
 8 //调用getcount方法
 9 int count = getcount(maxstring,minstring);
10 System.out.println("java在这个大串中出现了"+count+"次");
11 }
12 
13 //定义这个方法
14 public static int getcount(String max,String min){
15 //定义一个统计变量
16 int count = 0 ;
17 
18 //在大串中查找小串是否存在,用 int indexOf(String str):返回指定字符在此字符串中第一次出现处的索引。
19 int index = max.indexOf(min);
20 
21 //进行索引的判断
22 while(index != -1){
23 //统计变量自增
24 count ++;
25 
26 //从得到的索引开始,再加上小串的长度,到字符串的最后,开始截取一个新的字符串,再把这个字符串赋值给大串,替换之前的大串
27 // String substring(int start):从指定位置开始截取字符串,默认到末尾。    
28 
29 max = max.substring(index+min.length());    
30 
31 index = max.indexOf(min);//再次在大串中查找小串是否存在
32 }
33 return count;
34 
35 }
36 
37 }

 


2、优化版 统计大串中小串出现的次数
    需求:首先输入一个大串,接着输入一个小串,查询小串在大串中出现了几次
    分析:
      1、首先键盘录入2个字符串
        A:定义一个统计变量=0;
        B:在大串中查找小串是否存在,用 int indexOf(String str):返回指定字符在此字符串中第一次出现处的索引。
            a:如果返回的索引值是-1,则说明 大串中并不存在这个小串,输出统计变量
            b:返回的若不是-1,则是这个小串的第一个字符在大串中的索引,这个时候统计变量++
        C:从得到的索引开始,再加上小串的长度,到字符串的最后,开始截取一个新的字符串,再把这个字符串赋值给大串,替换之前的大串
          String substring(int start):从指定位置开始截取字符串,默认到末尾。
        D:再次从B开始循环,直到得到的新字符串没有了这个小串,也就是B中的a
    以上分析定义为一个方法,方法的两个要素:
        a:返回值:int
        b:参数列表:两个字符串,大串和小串


 1 import java.util.Scanner;
 2 public class StringText4 {
 3 
 4 public static void main(String[] args) {
 5 //1、首先键盘录入2个字符串
 6 Scanner sc = new Scanner(System.in);
 7 System.out.println("请输入大串:");
 8 String maxstring = sc.nextLine();
 9 System.out.println("请输入小串:");
10 String minstring = sc.nextLine();
11 
12 //调用getCount方法
13 int count = getCount(maxstring,minstring);
14 System.out.println(minstring+"在"+maxstring+"中出现了"+count+"次");
15 
16 }
17 //定义方法
18 public static int getCount(String max,String min){
19 //定义一个统计变量
20 int count = 0;
21 //在大串中查找小串是否存在,用 int indexOf(String str):返回指定字符在此字符串中第一次出现处的索引。
22 int index;
23 while((index=max.indexOf(min))!= -1){
24 //当得到的索引不是-1时
25 count++;
26 //从得到的索引开始,再加上小串的长度,到字符串的最后,开始截取一个新的字符串,再把这个字符串赋值给大串,替换之前的大串
27 max = max.substring(max.indexOf(min)+min.length());
28 }
29 return count;
30 }
31 
32 }

 

以上是关于java 11-8 在大串中查找小串的案例的主要内容,如果未能解决你的问题,请参考以下文章

一个小题目的三种不同的解法

Searching the String ZOJ - 3228 AC自动机查询升级版

母串中有几个相同的子串

String

业务代码如何才能不再写出大串的if/else?

为啥你写的代码老有大串的if/else?