[Python][LeetCode]28. 找出字符串中第一个匹配项的下标

给你两个字符串 haystack 和 needle ,请你在 haystack 字符串中找出 needle 字符串的第一个匹配项的下标(下标从 0 开始)。如果 needle 不是 haystack 的一部分,则返回  -1 。
示例 1:
输入:haystack = "sadbutsad", needle = "sad"
输出:0
解释:"sad" 在下标 06 处匹配。
第一个匹配项的下标是 0 ,所以返回 0 。
示例 2:
输入:haystack = "leetcode", needle = "leeto"
输出:-1
解释:"leeto" 没有在 "leetcode" 中出现,所以返回 -1 。
提示:
1 <= haystack.length, needle.length <= 104
haystack 和 needle 仅由小写英文字符组成

解题思路
把needle看成一个窗口块,在haystack上面不断滑动

def strStr(self, haystack, needle):
    """
    :type haystack: str
    :type needle: str
    :rtype: int
    """
    # 如果needle是空字符串就返回0
    if not needle:
        return 0
    # 相当于滑动窗口算法,窗口长度len(needle),滑动范围len(haystack) - len(needle),+1是因为range是左闭右开区间
    for i in range(len(haystack) - len(needle) + 1):
    	# Python字符串自带切片操作,切割出窗口大小的字符串
        if haystack[i:i+len(needle)] == needle:
            return i

    return -1

相关推荐

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-01-02 17:22:02       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-01-02 17:22:02       100 阅读
  3. 在Django里面运行非项目文件

    2024-01-02 17:22:02       82 阅读
  4. Python语言-面向对象

    2024-01-02 17:22:02       91 阅读

热门阅读

  1. c语言-数据类型详细介绍

    2024-01-02 17:22:02       61 阅读
  2. CentOS7安装docker

    2024-01-02 17:22:02       61 阅读
  3. MySQL5.7服务器 SQL 模式

    2024-01-02 17:22:02       52 阅读
  4. 前端crypto-js 库: MD5

    2024-01-02 17:22:02       66 阅读
  5. 7-2 sdut-Map-Sort--C~K的班级(III) --笔记篇

    2024-01-02 17:22:02       57 阅读
  6. C++ day4

    C++ day4

    2024-01-02 17:22:02      60 阅读
  7. 08 HXJson

    2024-01-02 17:22:02       50 阅读
  8. zabbix 批量添加主机

    2024-01-02 17:22:02       54 阅读
  9. 力扣134. 加油站

    2024-01-02 17:22:02       57 阅读
  10. ECC - 在离线程序中使用ECC流程的思考

    2024-01-02 17:22:02       53 阅读
  11. js 数组去重

    2024-01-02 17:22:02       58 阅读