題目描述:
解題思路:
使用樸素算法進行解題。即使用兩個指針j,i,分別指向haystack和needle,初始化i=j=0,然後判斷needle[i]是否等於haystack[j],如果等於,那麼繼續判斷它們的下一個字符是否匹配,如果中途匹配失敗,那麼將j往後移一步,i重新置0,重複以上過程;如果needle的所有字符都匹配成功了,直接返回匹配成功的haystack的位置即可;如果j遍歷完了haystack都沒匹配成功,那麼返回-1。
複雜度分析:
由於j處於每一個位置,都有可能需要遍歷一次needle,最壞的情況是j需要遍歷完haystack纔得到結論,此時最壞時間複雜度爲o(m*n),最後時間複雜度爲o(n),其中m爲haystack的長度,n爲needle的長度。
空間複雜度爲o(1)。
python代碼:
class Solution(object):
def strStr(self, haystack, needle):
"""
:type haystack: str
:type needle: str
:rtype: int
"""
if needle == "":
return 0
if needle is None:
return -1
for j in range(len(haystack) - len(needle) + 1):
i = 0
while i < len(needle):
if needle[i] == haystack[j]:
i += 1
j += 1
else:
break
if i == len(needle):
return j - len(needle)
return -1