LeetCode:28. 实现 strStr()(python3)
Posted 南岸青栀*
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode:28. 实现 strStr()(python3)相关的知识,希望对你有一定的参考价值。
28. 实现 strStr()
思路1:暴力匹配
遍历一遍,每次截取和needle相同长度的字符串,然后对比是否相同,相同则返回角标,遍历到最后都没有执行,说明不存在.
特殊情况:两个字符串相等,就不需要在遍历进行比较了
class Solution:
def strStr(self, haystack: str, needle: str) -> int:
if haystack == needle: return 0
for i in range(len(haystack)):
if haystack[i:i+len(needle)] == needle:
return i
return -1
优化:
只需要遍历到len(haystack)-len(needle)+1
即可,之后的遍历是无意义的,
class Solution:
def strStr(self, haystack: str, needle: str) -> int:
if haystack == needle: return 0
for i in range(len(haystack)-len(needle)+1):
if haystack[i:i+len(needle)] == needle:
return i
return -1
思路2:KMP算法;不在我的能力范围,日后补充
以上是关于LeetCode:28. 实现 strStr()(python3)的主要内容,如果未能解决你的问题,请参考以下文章
leetcode 28. Implement strStr() 实现strStr()