首先想到的是KMP,但是…
所以暴力求解
但是情况未考虑全面
漏掉了以下两点
1.原字符串长度小于目标字符串
2.字母重用
比如"ississipl",“issip”
缝补了一下代码
class Solution {
public:
int strStr(string haystack, string needle) {
int szh=haystack.size(),szn=needle.size();
if(szn==0)
return 0;
int result=-1;
for(int i=0,j=0;i<szh&&j<szn;){
if(haystack[i]==needle[j]){
if(j==0)
result=i;
++i;
++j;
if(j==szn)
return result;
if(i==szh)
return -1;
}
else{
if(result!=-1){
j=0;
i=result+1;
result=-1;
continue;
}
++i;
}
}
return result;
}
};
另,这就把KMP复习搞懂写出来