版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/xianqianshi3004/article/details/88066016
解题思路:
- 如果被查的字符串为空直接返回0;
- 如果被查字符串长度大于原始字符串返回-1;
- 为了节省时间我们可以在遍历原始字符的时候直到剩余的字符串长度等于被查的字符串长度。
代码:
int strStr(string haystack, string needle) {
if(needle.size()==0)
return 0;
int m=haystack.size();
int n=needle.size();
if(m<n)return -1;
for(int i=0;i<=m-n;i++){//注意这里是<=m-n。
int j=0;//每次都更新j的其实位置。
for(j=0;j<n;j++){
//haystack[i+j]比较巧妙
if(haystack[i+j]!=needle[j]) break;
}
if(j==n) return i;
}
return -1;
}