题目:
Implement strStr().
Returns the index of the first occurrence of needle in haystack, or -1 if needle is not part of haystack.
思路:
1、暴力枚举法:从haystack的开头试图匹配,如果匹配完成则返回;否则移动到下一位,并从needle的头部重新开始匹配。假设haystack的长度为m,needle的长度为n,则该算法的时间复杂度为O(m*n)。
2、KMP算法:这是字符串匹配中最经典的算法之一,其时间复杂度只有O(m)。可是该算法实在比较复杂,等到回头有空再补上KMP的代码实现吧。
代码:
class Solution {
public:
int strStr(string haystack, string needle) {
int length_difference = haystack.length() - needle.length();
for (int i = 0; i <= length_difference; i++)
{
// test whether the needle is from this index
size_t j = 0;
for (; j < needle.length(); j++)
{
if (haystack[i + j] != needle[j])
break;
}
if (j == needle.length())
return i;
}
return -1;
}
};