当前位置: 首页 > 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/a/162705.html

相关文章:

  • GitHub Org
  • 探索 HTTP 请求方法:GET、POST、PUT、DELETE 等的用法详解
  • CSP/信奥赛C++语法基础刷题训练(1):洛谷P5715 :三位数排序
  • 实现3D热力图
  • Golang | Leetcode Golang题解之第546题移除盒子
  • C++研发笔记13——C语言程序设计初阶学习笔记11
  • 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详解