Implement strStr()

Implement strStr().

Returns the index of the first occurrence of needle in haystack, or -1 if needle is not part of haystack.

New version: 4ms

 1 class Solution {
 2 public:
 3     int strStr(string haystack, string needle) {
 4         int result = 0;
 5         int lenN = needle.size(), lenH = haystack.size();
 6         if(lenN == 0 && lenH == 0) return 0;
 7         if(lenN == 0) return 0;
 8         if(lenH < lenN) return -1;
 9         
10         for(int i = 0; i <= lenH - lenN; i++){
11             if(haystack[i] == needle[0]){
12                 int index = 0, move = i;
13                 while(move < lenH && index < lenN && haystack[move] == needle[index]){
14                     move++;
15                     index++;
16                 }
17                 if(index == lenN) return i;
18             }
19         }
20         return -1;
21     }
22 };

Analyse: Pay special attention to when the length of haystack is less  than that of needle, and the case that needle is empty.

 1 class Solution {
 2 public:
 3     int strStr(string haystack, string needle){
 4         int index = -1;
 5         if(haystack.length() < needle.length()) return index;
 6         else if(needle.length() == 0) return 0;
 7         
 8         for(int j = 0; j <= haystack.length() - needle.length(); j++){
 9             int index_needle = 0;
10             if(haystack[j] == needle[index_needle]){
11                 index = j;
12                 for(int k = 1; k < needle.length(); k++){
13                     if(haystack[j+k] != needle[index_needle+k]){
14                         index = -1;
15                         break;
16                     }
17                 }
18             }
19             if(index >= 0) return index;
20         }
21         return index;
22     }
23 };