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-面试算法经典-Java实现】【028-Implement strStr() (实现strStr()函数)】

[【028-Implement strStr() (实现strStr()函数)】](028-Implement strStr() (实现strStr()函数))【LeetCode-面试算法经典-Jav...
  • DERRANTCM
  • DERRANTCM
  • 2015年07月25日 08:08
  • 2615

[C++]Implement strStr() 找到子字符串第一次出现的位置

leetcode 原题链接:https://leetcode.com/problems/implement-strstr/ Implement strStr(). Returns th...
  • lyy_hit
  • lyy_hit
  • 2015年08月23日 20:14
  • 1202

Stack_Queue 一个数组实现三个栈 @CareerCup

原文: Describe how you could use a single array to implement three stacks. 译文: 你如何只用一个数组实现三个栈...
  • hellobinfeng
  • hellobinfeng
  • 2014年03月01日 11:35
  • 1735

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

题目: 题目翻译: 分析: C++实现: Java实现: Python实现: 感谢阅读,欢迎评论!...
  • dragon_dream
  • dragon_dream
  • 2014年04月14日 09:26
  • 3189

LeetCode 28_Implement strStr()

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

Leetcode 28. Implement strStr()

Implement strStr().Returns the index of the first occurrence of needle in haystack, or -1 if needle ...
  • liudaxia1990
  • liudaxia1990
  • 2016年06月13日 18:13
  • 160

[LeetCode] 28. Implement strStr()

[LeetCode] 28. Implement strStr()Implement strStr().Returns the index of the first occurrence of nee...
  • ouwenjie10
  • ouwenjie10
  • 2017年02月21日 23:16
  • 97

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

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

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
  • 196

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

Problem: Implement strStr(). Returns the index of the first occurrence of needle in haystack...
  • runningtortoises
  • runningtortoises
  • 2015年05月12日 11:59
  • 1462
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:28. Implement strStr()
举报原因:
原因补充:

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