题目描述
解题思路
- 用一个字符n存储needle的首字母
- for循环遍历haystack字符串,找到与n相同字符的下标i
- 若找到从此下标i开始截取needle长度的字符串,判断与needle是否相同,相同返回下标i
- 否则,未找到返回-1
AC代码
int strStr(string haystack, string needle) {
int len2=needle.length();
if(len2==0) return 0;
char n=needle[0];
int len1=haystack.length();
for(int i=0;i<len1-len2+1;++i){
if(haystack[i]==n){
string s=haystack.substr(i,len2);
if(s==needle) return i;
}
}
return -1;
}
小结
官方题解有个降低运行时间的,仅判断到len1-len2+1,未考虑到