LeetCode题解——Implement strStr()

来源:互联网 发布:js获取div的name属性 编辑:程序博客网 时间:2024/06/06 06:57

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.

class Solution {public:    int strStr(string haystack, string needle) {      // return haystack.find(needle);      for(int i=0; ;i++){          for(int j=0; ;j++){              if(needle[j]=='\0') return i;              if(haystack[i+j]=='\0') return -1;              if(needle[j]!=haystack[i+j]) break;          }      }    }};


O(nm) runtime, O(1) space – Brute force:

You could demonstrate to your interviewer that this problem can be solved using known efficient algorithms such as Rabin-Karp algorithm, KMP algorithm, and the Boyer- Moore algorithm. Since these algorithms are usually studied in an advanced algorithms class, it is sufficient to solve it using the most direct method in an interview – The brute force method.

The brute force method is straightforward to implement. We scan the needle with the haystack from its first position and start matching all subsequent letters one by one. If one of the letters does not match, we start over again with the next position in the haystack.

The key is to implement the solution cleanly without dealing with each edge case separately.

0 0
原创粉丝点击