1. 程式人生 > >【Leetcode_總結】28. 實現strStr() - python

【Leetcode_總結】28. 實現strStr() - python

連結:https://leetcode-cn.com/problems/implement-strstr/description/

Q:

實現 strStr() 函式。

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

示例 1:

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

示例 2:

輸入: haystack = "aaaaa", needle = "bba"
輸出:
-1

思路:對於字串,這是一個類似於查詢或者匹配的問題,不使用index()等庫函式的話,我使用雙指標完成操作,對於fast指標,如果haystack [fast] == needle[0] 那麼slow = fast,fast+=len(needle) 如果 haystack[slow:fast] == needle 則返回slow 否則繼續遍歷,程式碼如下:

class Solution(object):
    def strStr(self, haystack, needle):
        """
        :type haystack: str
        :type needle: str
        :rtype: int
        """
        if not (needle in haystack):
            return -1
        if needle == "":
            return 0
        fast = 0
        lens = len(needle)
        while(fast < len(haystack)):
            if haystack[fast] == needle[0]:
                slow = fast
                fast += lens
                if haystack[slow:fast] == needle:
                    return slow
                else:
                    fast = slow+1
            else:
                fast+=1
        return -1