力扣28實現strStr

2021-10-14 01:50:00 字數 718 閱讀 3599

概述

這道題是要在 haystack 字串中找到 needle 字串。下面會給出的三種解法,這三種解法都基於滑動視窗。

子串逐一比較的解法最簡單,將長度為 l 的滑動視窗沿著 haystack 字串逐步移動,並將視窗內的子串與 needle 字串相比較,時間複雜度為 o((n - l)l)o((n−l)l)

顯示上面這個方法是可以優化的。雙指標方法雖然也是線性時間複雜度,不過它可以避免比較所有的子串,因此最優情況下的時間複雜度為 o(n)o(n),但最壞情況下的時間複雜度依然為 o((n - l)l)o((n−l)l)。

有 o(n)o(n) 複雜度的解法嘛?答案是有的,有兩種方法可以實現:

rabin-karp,通過雜湊演算法實現常數時間視窗內字串比較。

位元位操作,通過位元掩碼來實現常數時間視窗內字串比較。

方法一:子串逐一比較 - 線性時間複雜度

最直接的方法 - 沿著字元換逐步移動滑動視窗,將視窗內的子串與 needle 字串比較。

思路:

重點是substring函式的使用,

start + l).equals(needle)

class

solution

}return-1;}}

力扣題目 實現 strStr

題目 給定乙個 haystack 字串和乙個 needle 字串,在 haystack 字串中找出 needle 字串出現的第乙個位置 從0開始 如果不存在,則返回 1。解題思路 1.對各種極端的情況進行處理 比如,原字串長度比要尋找的字串短,空字串,以及兩個字串本來就相同 2.對一般的字串的操作 ...

28 實現 strStr (暴力)

1.問題描述 實現 strstr 函式。給定乙個 haystack 字串和乙個 needle 字串,在 haystack 字串中找出 needle 字串出現的第乙個位置 從0開始 如果不存在,則返回 1。示例 1 輸入 haystack hello needle ll 輸出 2 示例 2 輸入 ha...

LeetCode第28題 實現strStr

題目實現 strstr 函式。給定乙個 haystack 字串和乙個 needle 字串,在 haystack 字串中找出 needle 字串出現的第乙個位置 從0開始 如果不存在,則返回 1。class solution object defstrstr self,haystack,needle ...