编写一个静态方法,它接受两个字符串并返回一个布尔值,表示第一个字符串是否作为第二个

时间:2015-10-18 13:43:00

标签: java string

  

编写一个静态方法,该方法接受两个字符串并返回一个布尔值,表示第一个字符串是否作为第二个字符串中的子字符串出现。例如,如果字符串为"blis""antidisestablishment",则该方法应返回true。看看你是否可以编写两个版本的方法,一个使用迭代,另一个使用递归。

当我执行程序时,我在行'if (str2.substring(j,j+str1.length()).equals(str1)){'上收到错误

class Question2 {

    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        System.out.println("Enter a string: ");
        String str1 = input.nextLine();
        Scanner input1 = new Scanner(System.in);
        System.out.println("Enter another string: ");
        String str2 = input1.nextLine();
        if (q2(str1,str2)) {
             System.out.println(str1 + " is , a substring of " + str2);
        } else { 
            System.out.println(str1 + " is not, a substring of " + str2);
        }

    }

    public static boolean q2(String str1, String str2) {
        boolean word = false; 
        for(int i =0; i < str1.length(); i++) {
            for(int j =0; j < str2.length(); j++) {
                if (str2.substring(j,j+str1.length()).equals(str1)){
                    word = true;
                } else {
                    word = false;
                }
            }
        }
        return word;
    }
}

2 个答案:

答案 0 :(得分:0)

只需遍历较长的字符串,并检查str1长度为str1.length()的所有子字符串。

public static boolean q2(String str1, String str2) {

        for(int i = 0; i <= str2.length()-str1.length(); i++) {
            String sub = str2.substring(i, i+str1.length());
            if (sub.equals(str1)) {
                return true;
            }
        }
        return false;
    }

递归版本很容易实现,我将把它作为练习留给你。

答案 1 :(得分:0)

public static boolean checkSubString(String a,String b){
        return b.contains(a);
}