1.题目
Implement strStr().
Returns the index of the first occurrence of needle in haystack, or -1 if needle is not part of haystack.
2.题意
实现 strStr ()
返回匹配串在原串中第一次出现的下标,不存在则返回-1
3.分析
采用算法导论中的朴素字符串匹配算法
假设原串的长度是m,匹配串的长度是n
在原串中每一个长度为n的子串,都判断是否跟匹配串一致
总共有m-n+1个子串,所以算法的时间复杂度是O((m-n+1)*n)=O(m*n)
空间复杂度是O(1)
4.代码
class Solution {
public:
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)
{
int j;
for(j = 0; j < n; ++j)
{
if(haystack[i + j] != needle[j])
break;
}
if(j == n)
return i;
}
return -1;
}
};