Implement strStr().
Returns the index of the first occurrence of needle in haystack, or -1 if needle is not part of haystack.
Update (2014-11-02):
The signature of the function had been updated to return the index instead of the pointer. If you still see your function signature returns a char *
or String
, please click the reload button to reset your code definition.
题目解析:
1、这个方法是比较暴力的解决方法,KMP的方法可以进行加速
2、实现的时候注意一些边界。
#include <iostream>
using namespace std;
int strStr(char *haystack, char *needle) {
int lenh = strlen(haystack);
int lenn = strlen(needle);
if(lenn == 0)
return 0;
if(lenh < lenn || lenh == 0)
return -1;
int occurrence = 0;
int i,j;
for(i=0;i<=lenh-lenn;i++)
{
if(haystack[i] == needle[0])
{
occurrence = i;
for(j=1;j<lenn;j++)
{
if(haystack[i+j] != needle[j])
{
break;
}
}
if(j == lenn)
{
return occurrence;
}
}
}
if(i == lenh-lenn+1)
return -1;
}
int main(void)
{
char *haystack = "";
char *needle = "";
cout << strStr(haystack, needle) << endl;
system("pause");
return 0;
}