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 - 实现 strStr():问题

LeetCode 28 实现 strStr()

leetcode 28. Implement strStr() 实现strStr()

leetcode-----28. 实现 strStr()

LeetCode#28 | Implement strStr() 实现strStr()

python刷LeetCode:28. 实现 strStr()