题目链接:Implement strStr()

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.

这道题的要求是实现strStr()函数,返回needle在haystack中第一次出现的位置,如果没找到,这返回-1。

这道题的直接思路就是暴力查找,就是一个字符一个字符地进行匹配。不多说了,如果有兴趣,可以去研究这几个O(m+n)的算法:Rabin-Karp算法、KMP算法和Boyer-Moore算法。

时间复杂度:O(mn)

空间复杂度:O(1)

 1 class Solution
 2 {
 3 public:
 4     int strStr(char *haystack, char *needle)
 5     {
 6         int l1 = strlen(haystack), l2 = strlen(needle);
 7         for(int i = 0, j; i <= l1 - l2; ++ i)
 8         {
 9             for(j = 0; j < l2 && haystack[i + j] == needle[j]; ++ j);
10             if(j == l2)
11                 return i;
12         }
13         return -1;
14     }
15 };