leetcode的python實現 刷題筆記28:實現strStr()
阿新 • • 發佈:2018-11-25
實現 strStr() 函式。
給定一個 haystack 字串和一個 needle 字串,在 haystack 字串中找出 needle 字串出現的第一個位置 (從0開始)。如果不存在,則返回 -1。
示例 1:
輸入: haystack = "hello", needle = "ll" 輸出: 2
示例 2:
輸入: haystack = "aaaaa", needle = "bba" 輸出: -1
說明:
當 needle
是空字串時,我們應當返回什麼值呢?這是一個在面試中很好的問題。
對於本題而言,當 needle
class Solution: def strStr(self, haystack, needle): """ :type haystack: str :type needle: str :rtype: int """ if len(haystack) == len(needle): if haystack == needle: return 0 else: return -1 for i in range(0,len(haystack)): j = 0 k = i while j<len(needle) and k<len(haystack) and needle[j] == haystack[k]: j+=1 k+=1 if j == len(needle): return i return -1 if needle else 0 sl = Solution() print(sl.strStr("hello","lo")) print(sl.strStr("aaaaa","ll"))
總結:
思路
1.是首先判斷兩個字串是否相同,如果相同,返回0,說明從第一個元素開始就已經相同。否則就返回-1。
2.然後 遍歷兩個字串,使用了while迴圈做判斷,當出現第一個元素相同時,接著判斷這個元素後面的元素是否也相同,於是就j和k都自加1.當已經把第二個字串遍歷完之後,如果當前的j相等於needle的話,說明needle這個字串的長度小於haystack,然後說明while迴圈證明是正確的,返回當前的i位置,就是needle 字串在 haystack 字串中出現的第一個位置。
3.如果以上的還沒有執行,就判斷needl是否存在,如果存在就返回-1,否則說明是空字串,返回0.
要注意的點:
1.字串是 Python 中最常用的資料型別。我們可以使用引號('或")來建立字串,如
var1 = 'Hello World!'
2.Python訪問子字串,可以使用方括號來擷取字串,如
print(var1[0])
3.return 語句就是講結果返回到呼叫的地方,並把程式的控制權一起返回。
程式執行到所遇到的第一個return即返回(退出def塊),不會再執行第二個return。
值得注意的是,一個函式體中可以有一個return 語句。
函式沒有 return,預設 return一個 None 物件。