子串在母串中出现的次数

问题描述

下方给定的程序中,函数fun的功能是:统计substr在str中的出现次数。
比如说,字符串为aaab ljsuab,子字符串为ab,那么返回的结果为2.
请修改程序中的错误,使能计算正确的结果。
注意:不要修改main函数,也不要更改程序的结构。
题目中可能既会出现语法错误,也会出现逻辑错误哦~
相信你可以搞定,试试吧。

import java.util.*;

public class Main{
    public static void main(String args[]){
    Scanner input = new Scanner(System.in);
    String str = input.nextLine();
    String substr = input.nextLine();
    System.out.println(fun(str, substr));

    }
    
    static int fun(String str, String substr)
    {
        int count = 0;

        return count;
    }
}

输入格式

aaab ljsuab
ab

输出格式

2

代码

参考代码一

package javaexam;

import java.util.Scanner;

public class CountSubStr
{
    public static void main(String[] args)
    {
        Scanner input = new Scanner(System.in);
        String str = input.nextLine();
        String substr = input.nextLine();
        System.out.print(fun(str, substr));
    }
    
    static int fun(String str, String substr)
    {
        int count = 0, start = 0;
        
        while((start = str.indexOf(substr, start) + 1) > 0)
        {
            ++count;
        }
        
        return count;
    }
}

注:Java中字符串中子串的查找共有四种方法(indexof())

参考代码二

import java.util.*;

public class Main{
    public static void main(String args[]){
    Scanner input = new Scanner(System.in);
    String str = input.nextLine();
    String substr = input.nextLine();
    System.out.println(fun(str, substr));

    }
    
    static int fun(String str, String substr)
    {
        int count = 0;

        for(int i = 0; i < (str.length() - substr.length() + 1); ++i)
        {
            if(str.substring(i, i + substr.length()).equals(substr))
                ++count;
        }

        return count;
    }
}

样例测试

aaab ljsuab
ab
2

猜你喜欢

转载自www.cnblogs.com/narisu/p/9057891.html
今日推荐