Python学习日记010——实现strStr()
题目来源:LeetCode题库——实现strStr()
实现 strStr() 函数。
给定一个 haystack 字符串和一个 needle 字符串,在 haystack 字符串中找出 needle 字符串出现的第一个位置 (从0开始)。如果不存在,则返回 -1。
Example1:
输入: haystack = “hello”, needle = “ll”
输出: 2
Example2:
输入: haystack = “aaaaa”, needle = “bba”
输出: -1
注:对于本题而言,当 needle 是空字符串时我们应当返回 0 。
链接:https://leetcode-cn.com/problems/implement-strstr
实现strStr()——指针遍历判断
解决这个问题,我们可以采用遍历字符串的方法。指针 i 从字符串的开头开始移位,每次判断字符串中 [ i : i + len(needle) ]位置上的字符串与所给的 needle 是否相等,如果相等,则满足题意,返回 i 的值。如果不相等,则指针向后移位,继续进行上述判断。当指针到达 len(haystack) - len(needle) 位置时,为最后一个移位位置,若此时题设条件仍不成立,则返回 -1 。
具体实现过程如下:
class Solution:
def strStr(self, haystack: str, needle: str) -> int:
if len(needle) == 0: #needle为空字符串时返回0
return 0
else:
i = 0
while i <= len(haystack) - len(needle): #指针移位范围
if haystack[i:i+len(needle)] == needle:
return i
else:i += 1 #指针向后移位
return -1
实现strStr()——内置函数
如果使用内置函数,这道题的求解将变得特别简单。
class Solution:
def strStr(self, haystack: str, needle: str) -> int:
if needle in haystack:
return haystack.index(needle)
else:
return -1
学习过程中,欢迎指正。