Implement strStr() - LeetCode
阿新 • • 發佈:2019-02-03
毫無 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