18 實現 strStr()-2020329
題目
實現 strStr() 函數。
給定一個 haystack 字符串和一個 needle 字符串,在 haystack 字符串中找出 needle 字符串出現的第一個位置 (從0開始)。如果不存在,則返回 -1。
示例
輸入: haystack = "hello", needle = "ll"
輸出: 2
說明
當 needle
是空字符串時,我們應當返回什麼值呢?這是一個在面試中很好的問題。
對於本題而言,當 needle
是空字符串時我們應當返回 0 。這與C語言的 strstr() 以及 Java的 indexOf() 定義相符。
注意事項
- 就是找到子字符串對應的開始索引,沒有找到就返回-1。
- 子字符串爲空時就返回0。
- 注意是子字符串所有的字母都有要有。
思路一
一個find就完了。
修改經歷:
1. 一次成功。(第一次提交)
- 執行用時 :40 ms, 在所有 Python3 提交中擊敗了58.80%的用戶
- 內存消耗 :13.7 MB, 在所有 Python3 提交中擊敗了8.41%的用戶
心得體會:
性能一般,不過真的簡單。
最終代碼展示:
class Solution:
def strStr(self, haystack: str, needle: str) -> int:
if len(needle) == 0:
return 0
return haystack.find(needle)
思路二
如果可以用find,則這種題毫無意義,因爲太簡單了。試試自己寫的額其他方法,比如雙指針什麼的。
修改經歷:
1. 一次成功。(第一次提交)
- 執行用時 :56 ms, 在所有 Python3 提交中擊敗了22.66%的用戶
- 內存消耗 :13.6 MB, 在所有 Python3 提交中擊敗了8.53%的用戶
心得體會:
這題不難。
最終代碼展示:
class Solution:
def strStr(self, haystack: str, needle: str) -> int:
if len(needle) == 0:
return 0
ind = 0
while len(haystack) - ind >= len(needle):
if haystack[ind] == needle[0] and haystack[ind:ind+len(needle)] == needle:
return ind
else:
ind += 1
return -1