1. 程式人生 > >LeetCode28-實現strStr()

LeetCode28-實現strStr()

昨天晚上睡覺前逛知乎時,發現我開設的這個LeetCode刷題專欄突然之間暴增了四十多號人,說實話,當時很激動了,因為覺得自己每天寫的東西被大家肯定了,被相信的感覺還是挺好的。另外又覺得身上的責任感又重了一些,因為大家相信你,如果你寫的東西將大家帶入了歧途,那這真是罪過了。尤其是昨天和一筆友交流演算法時,他給我提建議說:我以後貼的程式碼可以多加些註釋,這樣大家看起來就不會暈了,尤其是當你的程式碼比較多時。我覺得很有道理,各位筆友願意抽出時間來看我寫的東西,我覺得得對得起大家,所以我以後會盡可能的將我的程式碼寫詳細些。


28-實現strStr()

實現 strStr() 函式。

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

示例 1:

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

示例 2:

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

說明:

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

對於本題而言,當 needle 是空字串時我們應當返回 0 。這與C語言的 

strstr() 以及 Java的 indexOf() 定義相符。

這一題我覺得很很很簡單了,在python中直接用str.index()這個方法就可查找出needle子串在haystack母串中出現的位置,需要注意的就是如果haystack母串中沒有needle子串,那麼用index()方法此時就會報錯,所以用個if條件語句判斷一下就行了。

程式碼如下:

class Solution:
    # 直接採用index()方法可查找出needle子串在haystack子串中出現的位置
    def strStr(self, haystack, needle):
        """
        :type haystack: str
        :type needle: str
        :rtype: int
        """
        if needle is None:
            return 0
        if needle in haystack:
            return haystack.index(needle)
        else:
            return -1


if __name__ == "__main__":
    haystack = "aaaaaa"
    needle = "bba"
    loc = Solution().strStr(haystack, needle)
    print(loc)

執行效率也是沒得話說了,在90%以上。