1. 程式人生 > >Implement strStr() - LeetCode

Implement strStr() - LeetCode

毫無 bool 發現 一個 tac find lee 是否 博客

目錄

  • 題目鏈接
  • 註意點
  • 解法
  • 小結

題目鏈接

Implement strStr() - LeetCode

註意點

  • 輸入的數組是無序的

解法

解法一:暴力解法,當haystack[i]等於needle[0]的時候說明接下來的串有可能會是needle, 於是我們逐個遍歷判斷是否真的是needle。時間復雜度為O(nm)

class Solution {
public:
    int strStr(string haystack, string needle) {
        int l = needle.size(),n = haystack.length();
        if(l == 0)
        {
            return 0;
        }
        if(n < l)
        {
            return -1;
        }
        int i,j;
        for(i = 0;i < n;i++)
        {
            if(haystack[i] == needle[0])
            {
                bool flag = true;
                for(j = 0;j < l;j++)
                {
                    if(haystack[i+j] != needle[j])
                    {
                        flag = false;
                        break;
                    }
                }
                if(flag) return i;
            }
        }
        return -1;
    }
};

技術分享圖片

解法二:又是一個stl函數。時間復雜度為O(n)

class Solution {
public:
    int strStr(string haystack, string needle) {
        return haystack.find(needle);
    }
};

技術分享圖片

解法三:要用到KMP算法,留待以後補上~~

小結

  • 今天猛然發現自己似乎太多題目用C++封裝好的函數來解了,已經違背了自己刷LeetCode是為了復習算法的初衷,變成了毫無意義的刷題發博客...以後要註意這一點了...

Implement strStr() - LeetCode