28. Implement strStr()

28. Implement strStr()

Implement strStr().

Returns the index of the first occurrence of needle in haystack, or -1 if needle is not part of haystack.
Analysis:
字符串子串匹配问题,一般就是简单低效的朴素模式匹配算法和高效的KMP方法。
由于KMP方法稍微复杂,这里只用了朴素法。

Source Code(C++):

#include <iostream>
#include <vector>
using namespace std;

class Solution {
public:
    int strStr(string haystack, string needle) {
        int h_index=0, n_index=0;
        while(h_index<haystack.size() && n_index<needle.size()) {
            if (haystack.at(h_index) == needle.at(n_index)) {  //如果相等,继续对比下一位
                h_index++;
                n_index++;
            }
            else{
                h_index = h_index-n_index+1;    //否则,h退回到上次匹配首位的下一位
                n_index = 0;
            }
        }
        if (n_index==needle.size()){
            return h_index-needle.size();
        }
        else {
            return -1;
        }
    }
};

int main() {
    Solution sol;
    cout << sol.strStr("", "");
    cout << sol.strStr("", "a");
    cout << sol.strStr("a", "");
    cout << sol.strStr("avf", "vf");
    return 0;
}

你可能感兴趣的:(28. Implement strStr())