0
点赞
收藏
分享

微信扫一扫

力扣每日一题:28.实现strStr()

28.实现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

我的个人博客:https://qingfengpython.cn

力扣解题合集:https://github.com/BreezePython/AlgorithmMarkdown

举报

相关推荐

0 条评论