编写一个静态方法,该方法接受两个字符串并返回一个布尔值,表示第一个字符串是否作为第二个字符串中的子字符串出现。例如,如果字符串为
"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;
}
}
答案 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);
}