小黑带病完成苏州半程马拉松,并刷新了自己半马最好成绩,回去重感冒喝连花清瘟和止咳糖浆,下雪了治愈,出京频繁挨说了,准备前往首都机场飞往武汉的leetcode之旅:28. 找出字符串中第一个匹配项的下标

小黑代码:暴力穷举法

class Solution:
    def strStr(self, haystack: str, needle: str) -> int:
        # 字符串长度
        len_h = len(haystack)
        len_n = len(needle)
        if len_h < len_n:
            return -1
        # 开始滑动窗口
        for i in range(len_h):
            for j in range(len_n):
                if i+j >= len_h:
                    return -1
                if haystack[i+j] != needle[j]:
                    break
                if j == len_n-1:
                    return i
        return -1

在这里插入图片描述

小黑代码:尝试一下KMP算法烧脑锻炼一下思维

class Solution:
    def strStr(self, haystack: str, needle: str) -> int:
        # 模式串的最长前缀数组
        def get_next(pattern):
            # 字符串长度
            n = len(pattern)
            # 初始化next数组,第0个字符的最大前缀为0
            next_ = [0]
            # 前缀变量
            prefix = 0
            # 构造next_数组
            i = 1
            while i < n:
                # 末尾字符匹配,前缀长度+1
                if pattern[i] == pattern[prefix]:
                    prefix += 1
                    next_.append(prefix)
                # 不匹配的情况
                else:
                    # 前缀为0
                    if not prefix:
                        next_.append(0)
                    else:
                        prefix = next_[prefix-1]
                        continue
                i += 1
            return next_
        # KMP算法
        def KMP(string, pattern):
            # 获取模式串前缀数组
            next_ = get_next(pattern)
            # 字符串长度
            n_s = len(string)
            n_p = len(next_)
            if not n_p:
                return 0
            # 进行KMP匹配
            i = 0
            j = 0
            while i < n_s:
                # 末端字符是否相等
                if string[i] == pattern[j]:
                    j += 1
                # 不相等的话,找前一个字符的前缀处,继续进行末端匹配
                elif j:
                    j = next_[j-1]
                    continue
                i += 1
                # 匹配成功
                if j == n_p:
                    return i-n_p
            return -1
        return KMP(haystack, needle)

在这里插入图片描述

小黑生活(回忆版,相册误删了,只能通过聊天记录和朋友圈回忆部分内容)

苏州环阳山半程马拉松完赛,发着低烧,坚持了下来,并跑出了自己个人最好成绩,刚到终点就下雨了,舞花儿侠被淋了

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

舞花侠请我吃苏州有名的松鼠鱼

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

附近逛一逛,准备前往苏州北站高铁

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

高铁上饿得不行了,吃了碗饭,贵死了,48

在这里插入图片描述

麦当劳早餐,下雪了

在这里插入图片描述

苏州证书下来了,130直通差了20多秒,要是身体不难受一定可以

在这里插入图片描述

午餐干饭

在这里插入图片描述

午后咖啡

在这里插入图片描述

下班了地铁口麻辣烫

在这里插入图片描述
在这里插入图片描述

午餐干饭

在这里插入图片描述

午后咖啡

在这里插入图片描述

感冒了,身体好难受

在这里插入图片描述

回家煎牛排

在这里插入图片描述
在这里插入图片描述

午后咖啡

在这里插入图片描述

下班后麻辣烫

在这里插入图片描述
在这里插入图片描述

漆个连花清瘟

在这里插入图片描述

午餐干饭,羊肉泡馍

在这里插入图片描述

午后咖啡

在这里插入图片描述

下雪了,好治愈啊

在这里插入图片描述
在这里插入图片描述

回家涮火锅吃

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

喝止咳糖浆

在这里插入图片描述

午餐干饭

在这里插入图片描述

午后咖啡,计划武汉特种兵

在这里插入图片描述

准备前往武汉天河机场,临走前被所领导说了,让我少出去折腾哈哈哈

  • 9
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值