Python学习日记——实现strStr()

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
            

学习过程中,欢迎指正。

Python的增强版strstr函数是用于模糊查询的,它可以处理带有可选段的字符串。该函数在源字符串中查找第一次出现目标字符串的位置,并返回相对于源字符串地址的偏移量。 具体实现的过程如下: 1. 首先,需要生成所有可能的模式字符串。如果目标字符串中包含方括号 "[" 和 "]",则将方括号内的可选字符作为一个段,其他部分作为前缀和后缀。然后以不同的组合方式生成所有可能的模式字符串。 2. 对于每个生成的模式字符串,使用内置函数find()在源字符串中查找该模式字符串的索引位置。如果找到了,就返回该索引位置作为偏移量。 3. 如果在所有的模式字符串中都没有找到目标字符串,就返回-1,表示没有找到。 总结起来,Python的增强版strstr函数通过生成所有可能的模式字符串,并使用内置函数find()在源字符串中查找这些模式字符串的索引位置,来实现模糊查询的功能。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [Python学习日记——实现strStr()](https://blog.csdn.net/weixin_43872060/article/details/107740625)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [2023华为od机试真题B卷 Python 实现【增强的strstr函数】](https://blog.csdn.net/wtswts1232/article/details/131634576)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值