解题思路:这道题我的第一想法就是,遍历haystack的时候,让 haystack中的单个字符haystack[i]与needle[0]比较,如果相等,那么再进行一个for循环,从相等位置处向后一个一个字符去比较:haystack[i+1]与needle[0+1]、haystack[i+2]与needle[0+2]、......、haystack[i+n]与needle[0+n],如果比较过程中出现不一样的就证明不匹配,然后直到遍历完整个haystack就可以结束,如果有等于的话,就返回那个i的值,反之返回-1就可以了。
代码:
int strStr(string haystack, string needle) {
int n = needle.length();
int m = haystack.length();
for (int i = 0; i <= m-n; i++) //这里不需要遍历完一整个的haystack,后边的个数剩needle的长度就可以停止遍历了。
{
bool judge = true;
if (haystack[i]==needle[0])
{
for (int j = 1; j < n; j++)
{
if (haystack[j+i] != needle[j])
{
judge = false;
break;
}
}
if (judge)
{
return i;
}
}
}
return -1;
}