当前位置: 首页 > article >正文

【力扣100】8.找到字符串中所有字母异位词

添加链接描述

class Solution:
    def findAnagrams(self, s: str, p: str) -> List[int]:
        sildingstr=''
        result=[]
        p=''.join(sorted(p))
        for i in range(len(s)):
            if len(sildingstr)<len(p):
                sildingstr=sildingstr+s[i]
                # print(sildingstr)
            if len(sildingstr)==len(p):
                sort_sildingstr=''.join(sorted(sildingstr))
                if sort_sildingstr==p:
                    result.append(i-len(p)+1)
                    sildingstr=sildingstr[1:]
                else:
                    sildingstr=sildingstr[1:]
        return result


思路:

  1. 纯正的滑动窗口
  2. 笑死我了,差点超时,怎么可以这么慢!!!

优化:

  1. 使用哈希表作为判断工具,这样就可以不对字符串进行排序
class Solution:
    def findAnagrams(self, s: str, p: str) -> List[int]:
        n, m, res = len(s), len(p), []
        if n < m: return res
        p_cnt = [0] * 26
        s_cnt = [0] * 26
        for i in range(m):
            p_cnt[ord(p[i]) - ord('a')] += 1
            s_cnt[ord(s[i]) - ord('a')] += 1
        if s_cnt == p_cnt:
            res.append(0)
        
        for i in range(m, n):
            s_cnt[ord(s[i - m]) - ord('a')] -= 1
            s_cnt[ord(s[i]) - ord('a')] += 1
            if s_cnt == p_cnt:
                res.append(i - m + 1)
        return res

http://www.kler.cn/news/162705.html

相关文章:

  • HarmonyOS通过OpenGL渲染显示yuv数据
  • modbus转profinet网关解决plc插槽号不够用的情况
  • Numpy数组的运算(第7讲)
  • BUUCTF-WEB-刷题记录(2)
  • Netty03-核心组件NioEventLoopGroup解读
  • 使用Rust Rayon库提升程序运行速度
  • Pytest+Allure生成自动化测试报告!
  • WebGL笔记:矩阵旋转运算的原理和实现
  • stm32串口编程实例-实现数据的收发功能
  • 【CVE 复现】CVE-2022-0185 fsconfig之整数溢出
  • LinuxBasicsForHackers笔记 -- 使用和滥用服务
  • 自动化测试框架需要具备哪些功能?
  • 2、Redis变慢原因排查(下)
  • 使用Echarts.js绘制环形图(指定触发高亮事件)
  • Python中读写(解析)JSON文件的深入探究
  • MIT线性代数笔记-第26讲-对称矩阵及正定性
  • VUE学习二、创建一个前端项目
  • vs 安装 qt qt扩展 改迅雷下载qt
  • java中可重入锁的作用是什么?
  • Linux 统计命令Netstat详解
  • jsonwebtoken生成token和解析
  • 进制 + 原码,反码,补码
  • 供应链产品经理常用的ChatGPT通用提示词模板
  • 代立冬:基于Apache Doris+SeaTunnel 实现多源实时数据仓库解决方案探索实践
  • 持续集成交付CICD:CentOS 7 安装 Sonarqube9.6
  • 使用Java API操作HDFS
  • 云上巴蜀丨云轴科技ZStack成功实践精选(川渝)
  • Leetcode—2034.股票价格波动【中等】
  • 信息可视化在数字孪生中的应用:打造直观决策支持系统
  • css 十字分割线(含四等分布局)