LeetCode-28. Implement strStr()

Posted 番茄汁汁

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode-28. Implement strStr()相关的知识,希望对你有一定的参考价值。

一、问题描述

  实现子串寻找,给定一个str1和str2,在str1中寻找str2第一次出现的位置,返回第一个字符在str1中的位置,如果没有找到则返回-1。

  例子:haystack = "hello", needle = "ll",返回2。

二、问题解决

  对,没错,这就是KMP算法。

  这里写了个简单好理解的吗,思路也很简单了,每次找到第一个字母相等的情况就拿str2和去比较后面的字符。

int strStr(string haystack, string needle) {
    if (haystack.size() < needle.size()) return -1;
    if (needle.size() == 0) return 0;
    if (haystack.size() == needle.size())
        if (haystack == needle)
            return 0;
        else
            return -1;
    for (int i = 0; i < haystack.size() - needle.size()+1; i++) {
        if (haystack.at(i) == needle.at(0)) {
            int temp = i;
            for (auto j : needle) {
                if (j != haystack.at(temp))
                    break;
                temp++;
            }
            if (temp - i == needle.size())
                return i;
        }
    }
    return -1;
}

int main()
{
    string s1 = "mississippi";
    string s2 = "pi";
    cout << strStr(s1,s2) << endl;

    system("pause");
    return 0;
}

 

以上是关于LeetCode-28. Implement strStr()的主要内容,如果未能解决你的问题,请参考以下文章

Leetcode---28. Implement strStr()

44. leetcode 28. Implement strStr()

leetcode 28. Implement strStr()

19.1.30 [LeetCode 28] Implement strStr()

LeetCode 28: Implement Strstr

LeetCode 28. Implement strStr()