String类练习:记录一个子串在整串中出现的次数

题目:记录一个子串在整串中出现的次数

整串:"nbaernbatynbauinbaopnba"

子串:"nba"

思路:

1,要找的子串是否存在,如果存在 获取其出现的位置。 这个可以使用indexOf完成.

2,如果找到了, 那么就记录出现的位置并在剩余的字符串中继续查找该子串,

      而剩余字符串的起始位是 出现位置+子串的 长度.

3,以此类推,通过循环完成查找,如果找不到就是-1,并对每次找到用计数器记录.

解题代码:

public class Demo02 {
    public static void main(String[] args) {
        //声明一个字符串
        String s = "nbaernbatynbauinbaopnba";
        //声明一个子串
        String zi = "nba";
        int count = count(s, zi);
        //判断子串是否存在于字符串中
        if (s.indexOf("nba")!=-1) {
            System.out.println("子串"+zi+"存在于字符串中");
        } else {
            System.out.println("子串"+zi+"不存在于字符串中");
        }
        System.out.println("子串"+zi+"在字符串中一共出现了"+count+"次");
    }
    public static int count(String s, String zi) {
        //定义计数器记录出现的总次数
        int add = 0;
        //用于每次显示次数
        int n=1;
        //如果整串中不包含子串,则直接返回count
        if (!s.contains(zi)) {
            return add;
        }
        //通过循环索引字符串的下标 记录 zi 子串出现的位置
        int index = 0;
        int index1= 0;
        while ((index = s.indexOf(zi)) != -1) {
            //在数到一个后,马上找到新的字符串进行搜索
            s = s.substring(index + zi.length());
            System.out.println("第"+(n++)+"次出现的位置是:"+(index+index1));
            //加上上一次的索引和 zi 的长度以显示在整个父字符串中的位置
            index1=(index+index1+zi.length());
            add++;
        }
        return add;
    }
}

猜你喜欢

转载自blog.csdn.net/m0_49517277/article/details/107727155