不错的方法@rolfl。为您的解决方案添加一个小贡献:当字符串等于子字符串时有一个小错误。它永远不会进入外循环,我们可以有 string="cat" 和 substring="cat" 所以 indexOf 应该是 0。修改外循环应该可以工作:i < s1.length() - (substring.length()-1)
@Test
public void test_firstSubstring(){
String s = "cat";
String p = "cat";
int actual = findFirstSubstring(s,p);
assertEquals(0,actual);
}
public static int findFirstSubstring(String s1, String substring){
if(s1.isEmpty() || substring.isEmpty() || substring.length() > s1.length()){
return -1;
}
outloop: for (int i = 0; i < s1.length() - (substring.length()-1) ; i++){
for (int j=0; j < substring.length(); j++){
if (s1.charAt(i+j) != substring.charAt(j)) {
continue outloop;
}
}
return i;
}
return -1;
}