iT邦幫忙

0

leetcode with python:28. Implement strStr()

  • 分享至 

  • xImage
  •  

題目:

Given two strings needle and haystack, return the index of the first occurrence of needle in haystack, or -1 if needle is not part of haystack.

For the purpose of this problem, we will return 0 when needle is an empty string.

給定兩個字串(haystack,needle),檢查needle是否在haystack內,若有回傳needle第一次出現時的index,若無則回傳-1,若needle為空,回傳0

用一些字串操作,這題會變得十分簡單

class Solution:
    def strStr(self, haystack: str, needle: str) -> int:
        if needle not in haystack:
            return -1
            
        if needle=="":
            return 0
            
        haystack=haystack.replace(needle," ")
        for i in range(len(haystack)):
            if haystack[i]==" ":
                return i

先檢測needle是否在haystack內及needle是否為空字串
確定needle在haystack內後將needle replace成" "
最後再檢索" "的位置即可
最後執行時間為28ms(faster than 96.18%)

但這樣似乎有點偷吃步
在討論區有看到比較正規的解法

class Solution:
    def strStr(self, haystack: str, needle: str) -> int:
        if needle=="":
            return 0
        for i in range(len(haystack)-len(needle)+1):
            if haystack[i:i+len(needle)]==needle:
                return i
        return -1

簡單來說就是偏暴力解,一個一個去對比
不過最後執行時間為31ms(faster than 91.34%),也不算太差
大概分享一下其他寫法

那我們下題見


圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言