我正在编写一个包含多个方法的程序,其中一个要求在第一个字符串的最右边区域找到第二个字符串开始的索引。
该方法接受两个字符串作为参数,并返回第二个字符串在第一个字符串的最右边区域开始的位置的字符索引。
例如:
IN:密西西比,ss
OUT:5
此方法的问题是,我只能使用charAt
类中的substring
,length
和String
,而不能使用其他类方法。
在本网站的一些用户的帮助下,我们想出了这个:
public static int findInStr1(String s1, String s2) {
for (int i = 0; i < s1.length() - s2.length(); i++) {
boolean found = true;
for (int j = 0; j < s2.length(); j++) {
if (s1.charAt(i) != s2.charAt(j)) {
found = false;
break;
}
}
if (found) {
return i;
}
}
return -1;
}
上面的方法给出了字符串2在字符串1中开始的索引,但是我正在尝试编写一个方法,该方法给出了字符串2在字符串1最右边区域开始的索引。
答案 0 :(得分:1)
您可以调整方法以从右到左扫描第一个字符串:
public static int findInStr1(String s1, String s2) {
for (int i = s1.length() - 1; i >= s2.length() - 1; i--) {
boolean found = true;
for (int j = s2.length() - 1; j >= 0; j--) {
if (s1.charAt(i-(s2.length()-1-j)) != s2.charAt(j)) {
found = false;
break;
}
}
if (found) {
return i-s2.length()+1;
}
}
return -1;
}