leetcode的python实现 刷题笔记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() 定义相符。

class Solution:
    def strStr(self, haystack, needle):
        """
        :type haystack: str
        :type needle: str
        :rtype: int
        """
        if len(haystack) == len(needle):
            if haystack == needle:
                return 0
            else:
                return -1

        for i in range(0,len(haystack)):
            j = 0
            k = i
            while j<len(needle) and k<len(haystack) and needle[j] == haystack[k]:
                j+=1
                k+=1

            if j == len(needle):
                return i
        return -1 if needle else 0

sl = Solution()
print(sl.strStr("hello","lo"))
print(sl.strStr("aaaaa","ll"))

总结:

思路

1.是首先判断两个字符串是否相同,如果相同,返回0,说明从第一个元素开始就已经相同。否则就返回-1。

2.然后 遍历两个字符串,使用了while循环做判断,当出现第一个元素相同时,接着判断这个元素后面的元素是否也相同,于是就j和k都自加1.当已经把第二个字符串遍历完之后,如果当前的j相等于needle的话,说明needle这个字符串的长度小于haystack,然后说明while循环证明是正确的,返回当前的i位置,就是needle 字符串在 haystack 字符串中出现的第一个位置。

3.如果以上的还没有执行,就判断needl是否存在,如果存在就返回-1,否则说明是空字符串,返回0.

要注意的点:

1.字符串是 Python 中最常用的数据类型。我们可以使用引号('或")来创建字符串,如

var1 = 'Hello World!'

2.Python访问子字符串,可以使用方括号来截取字符串,如

print(var1[0])

3.return 语句就是讲结果返回到调用的地方,并把程序的控制权一起返回。

程序运行到所遇到的第一个return即返回(退出def块),不会再运行第二个return。

值得注意的是,一个函数体中可以有一个return 语句。

函数没有 return,默认 return一个 None 对象。

猜你喜欢

转载自blog.csdn.net/weixin_41931602/article/details/82846287
今日推荐