28.实现strStr()
https://leetcode-cn.com/problems/implement-strstr/
难度:中等
题目:
实现strStr()函数。
给你两个字符串haystack 和 needle ,请你在 haystack 字符串中找出 needle 字符串出现的第一个位置(下标从 0 开始)。如果不存在,则返回 -1 。
说明:
当needle是空字符串时,我们应当返回什么值呢?这是一个在面试中很好的问题。
对于本题而言,当needle是空字符串时我们应当返回 0 。这与 C 语言的strstr()以及 Java 的indexOf()定义相符。
示例:
示例 1:
输入:haystack = "hello", needle = "ll"
输出:2
示例 2:
输入:haystack = "aaaaa", needle = "bba"
输出:-1
示例 3:
输入:haystack = "", needle = ""
输出:0
分析
典型的双指针滑动窗口问题,基本套路如下:
初始左指针为0,右指由于左闭右开,所以right指针为滑窗长度len(needle)
while 右指针小于等于len(haystack)判断滑窗是否等于目标字符串
等于返回left指针,不等于左、右指针同时加1.
解题:
class Solution:
def strStr(self, haystack, needle):
if not needle:
return 0
left = 0
right = len(needle)
while right <= len(haystack):
if haystack[left:right] == needle:
return left
left += 1
right += 1
return -1
欢迎关注我的公众号: 清风Python,带你每日学习Python算法刷题的同时,了解更多python小知识。
我的个人博客:https://qingfengpython.cn