28. Implement strStr()

原创 2016年05月31日 18:27:54

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;
}
版权声明:转载请注明出处,谢谢。

相关文章推荐

LeetCode 28 — Implement strStr()(C++ Java Python)

题目: 题目翻译: 分析: C++实现: Java实现: Python实现: 感谢阅读,欢迎评论!...

LeetCode 28_Implement strStr()

这是今天的第三题了,也是leetcode第28题,算法的难度也是easy,但字符串匹配这个问题本身是一个非常重要的问题。而其算法有相对简单的,有比较难的,今天我们来讲一个比较有深度的方法。当然,算法难...
  • cyfcsd
  • cyfcsd
  • 2015年11月25日 19:48
  • 381

Leetcode 28. Implement strStr()

Implement strStr().Returns the index of the first occurrence of needle in haystack, or -1 if needle ...

[LeetCode] 28. Implement strStr()

[LeetCode] 28. Implement strStr()Implement strStr().Returns the index of the first occurrence of nee...

[LeetCode-28] Implement strStr(KMP 字符串匹配)

1、KMP算法的思想 由D.E.Knuth、J.H.Morris和V.R.Pratt共同提出了一个改进算法,消除了Brute-Force算法中串s指针的回溯,完成串的模式匹配。时间复杂度为O(s.c...

leetcode:28. Implement strStr()

Implement strStr().Returns the index of the first occurrence of needle in haystack, or -1 if needle ...
  • Earl211
  • Earl211
  • 2017年03月13日 09:03
  • 166

LeetCode 28 Implement strStr() (C,C++,Java,Python)

Problem: Implement strStr(). Returns the index of the first occurrence of needle in haystack...

【LEETCODE】28-Implement strStr()

Implement strStr(). Returns the index of the first occurrence of needle in haystack, or -1 if needl...

LeetCode 28. Implement strStr()(实现子串定位)

原题网址:https://leetcode.com/problems/implement-strstr/ Implement strStr(). Returns the index of the...
  • jmspan
  • jmspan
  • 2016年05月20日 10:35
  • 238

[Leetcode P28] Implement strStr()(KMP算法)

原题:Implement strStr().Returns the index of the first occurrence of needle in haystack, or -1 if need...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:28. Implement strStr()
举报原因:
原因补充:

(最多只允许输入30个字)