leetcode:實現 strStr() 函式。
阿新 • • 發佈:2020-07-21
給定一個haystack 字串和一個 needle 字串,在 haystack 字串中找出 needle 字串出現的第一個位置 (從0開始)。如果不存在,則返回 -1。
示例 1:
輸入: haystack = "hello", needle = "ll"
輸出: 2
來源:力扣(LeetCode)
連結:https://leetcode-cn.com/problems/implement-strstr
移動 p1指標,直到 pn 所指向位置的字元與 needle 字串第一個字元相等。
通過 p1,p2,curr_len 計算匹配長度。
如果完全匹配(即 curr_len == L),返回匹配子串的起始座標(即 p1 - L)。
如果不完全匹配,回溯。使 p1 = p1 - curr_len + 1, p2 = 0, curr_len = 0。
class Solution: def strStr(self, haystack: str, needle: str) -> int: l1,l2=len(haystack),len(needle) if l2==0: return 0 p1=0 while p1<l1-l2+1: p2,length=0,0 while p1<l1-l2+1 andhaystack[p1]!=needle[0]: #這裡p1小於兩個字串長度差值即可 p1+=1 while p1<l1 and p2<l2 and haystack[p1]==needle[p2]: #這裡p1<l1因為需要比較完l1字串 p1+=1 p2+=1 length+=1 if length==l2:return p1-l2 p1=p1-p2+1 #回溯 return -1