昨天晚上睡觉前逛知乎时,发现我开设的这个LeetCode刷题专栏突然之间暴增了四十多号人,说实话,当时很激动了,因为觉得自己每天写的东西被大家肯定了,被相信的感觉还是挺好的。另外又觉得身上的责任感又重了一些,因为大家相信你,如果你写的东西将大家带入了歧途,那这真是罪过了。尤其是昨天和一笔友交流算法时,他给我提建议说:我以后贴的代码可以多加些注释,这样大家看起来就不会晕了,尤其是当你的代码比较多时。我觉得很有道理,各位笔友愿意抽出时间来看我写的东西,我觉得得对得起大家,所以我以后会尽可能的将我的代码写详细些。
28-实现strStr()
实现 strStr() 函数。
给定一个 haystack 字符串和一个 needle 字符串,在 haystack 字符串中找出 needle 字符串出现的第一个位置 (从0开始)。如果不存在,则返回 -1。
示例 1:
输入: haystack = "hello", needle = "ll"
输出: 2
示例 2:
输入: haystack = "aaaaa", needle = "bba"
输出: -1
说明:
当 needle
是空字符串时,我们应当返回什么值呢?这是一个在面试中很好的问题。
对于本题而言,当 needle
是空字符串时我们应当返回 0 。这与C语言的 strstr() 以及 Java的 indexOf() 定义相符。
这一题我觉得很很很简单了,在python中直接用str.index()这个方法就可查找出needle子串在haystack母串中出现的位置,需要注意的就是如果haystack母串中没有needle子串,那么用index()方法此时就会报错,所以用个if条件语句判断一下就行了。
代码如下:
class Solution:
# 直接采用index()方法可查找出needle子串在haystack子串中出现的位置
def strStr(self, haystack, needle):
"""
:type haystack: str
:type needle: str
:rtype: int
"""
if needle is None:
return 0
if needle in haystack:
return haystack.index(needle)
else:
return -1
if __name__ == "__main__":
haystack = "aaaaaa"
needle = "bba"
loc = Solution().strStr(haystack, needle)
print(loc)
执行效率也是没得话说了,在90%以上。