实现 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 对象。