2018-06-14 LeetCode28

2018-06-14  本文已影响0人  Betrayer丶

题目描述

我的解法

简单的遍历寻找,虽然一看到这一题就想到了KMP算法,但是全都忘记了。。。

class Solution:
    def strStr(self, haystack, needle):
        if needle == "":
            return 0
        for pos in range(len(haystack)):
            if needle == haystack[pos:pos+len(needle)]:
                return pos
        return -1    

最优解法

大众解法

比例最高的算法是直接调用字符串的find函数,一步到位。

class Solution:
    def strStr(self, haystack, needle):
        return haystack.find(needle) 

最优解法

好像只是加了个去尾的判断,为啥不用KMP算法呢…

class Solution:
    def strStr(self, haystack, needle):
        if needle == "":
            return 0
        edge = len(haystack)
        length = len(needle)
        for i in range(len(haystack)):
            if haystack[i] == needle[0]:
                if i + length > edge:
                    return -1
                if haystack[i:i+length] == needle:
                    return i
        return -1
上一篇下一篇

猜你喜欢

热点阅读