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,不好跳。要注意一些情況就行了 這裡...