public int strStr(String source, String target) {
//write your code here
if (source == null || target == null || source.length() < target.length()) {
return -1;
}
if (target.length() == 0) {
return 0;
}
int i = 0;
int j = 0;
while (true) {
if (source.charAt(i) == target.charAt(j)) {
j++;
i++;
} else {
if (j == 0){
i++;
}
j = 0;
}
if (j == target.length()) {
return i - j;
}
if (i == source.length()) {
break;
}
}
return -1;
//write your code here
if (source == null || target == null || source.length() < target.length()) {
return -1;
}
if (target.length() == 0) {
return 0;
}
int i = 0;
int j = 0;
while (true) {
if (source.charAt(i) == target.charAt(j)) {
j++;
i++;
} else {
if (j == 0){
i++;
}
j = 0;
}
if (j == target.length()) {
return i - j;
}
if (i == source.length()) {
break;
}
}
return -1;
}
不会弄什么编辑器,写个总结吧,理理思路。我之前想的是如果匹配,子串和母串同时移动,如果不匹配,子串返回首位置,母串继续移动,但是就是这出错了,,,比如acactor 和 actor 匹配时,应该进一步修改细节,如果不匹配,这时候如果是因为子串首字母都不匹配,那么原思路是正确的,但是如果匹配了一半不匹配了,此时母串不应该向后移动的。即i++.