28 實現 strStr (暴力)

2021-10-11 11:43:18 字數 1014 閱讀 3397

1. 問題描述:

實現 strstr() 函式。給定乙個 haystack 字串和乙個 needle 字串,在 haystack 字串中找出 needle 字串出現的第乙個位置 (從0開始)。如果不存在,則返回  -1。

示例 1:

輸入: haystack = "hello", needle = "ll"

輸出: 2

示例 2:

輸入: haystack = "aaaaa", needle = "bba"

輸出: -1

說明:

needle是空字串時,我們應當返回什麼值呢?這是乙個在面試中很好的問題。

2. 思路分析:

乙個簡單的做法是從haystack的起始位置開始逐一匹配長度為len(needle)的子串,判斷是否相等如果相等直接返回當前的這個位置,不相等則往下乙個位置進行匹配,因為使用的是python語言所以可以使用python的切片操作擷取字串,除了暴力破解的方法之外,還可以使用kmp演算法進行匹配,在力扣的題解中發現乙個寫得通俗易懂的kmp演算法題解,**

3. **如下:

暴力破解:

class solution:

def strstr(self, haystack: str, needle: str) -> int:

l1, l2 = len(haystack), len(needle)

if l1 < l2: return -1

for start in range(l1 - l2 + 1):

# python的切片操作擷取字串

if haystack[start: start + l2] == needle: return start

return -1

力扣28實現strStr

概述 這道題是要在 haystack 字串中找到 needle 字串。下面會給出的三種解法,這三種解法都基於滑動視窗。子串逐一比較的解法最簡單,將長度為 l 的滑動視窗沿著 haystack 字串逐步移動,並將視窗內的子串與 needle 字串相比較,時間複雜度為 o n l l o n l l 顯...

LeetCode第28題 實現strStr

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

LeetCode28 實現strStr 水題

一開始的想法是 取needle的第乙個字元開始唄,遇到合適的再比第二個。如果是找到的話,肯定是乙個個比對完了。找不到的情況就是,needle字串比haystack剩下的字串長了。能夠跳的情況.算了,還是一步步來,這個不合適就比對下乙個。比如原串1112,子串112,不好跳。要注意一些情況就行了 這裡...