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

力扣第二阶段Days34

1,题目描述-找出字符串中所有的字母异位词

给定两个字符串 s 和 p,找到 s 中所有 p 的 异位词 的子串,返回这些子串的起始索引。不考虑答案输出的顺序。

异位词 指由相同字母重排列形成的字符串(包括相同的字符串)。

2,解题

var findAnagrams = function(s, p) {
    if (!s || s.length < p.length) return [];

    let left = 0;
    let res = [];
    const need = Array(26).fill(0);
    const window = Array(26).fill(0);
  

    // 初始化目标字符串的计数
    for (let char of p) {
        need[char.charCodeAt(0) - 'a'.charCodeAt()]++;
    }

    for(let i = 0; i < s.length; i++){
        window[s.charCodeAt(i) - 'a'.charCodeAt()]++;

        if(i - left === p.length -1){
             if (need.toString() === window.toString()) {
                res.push(left);
            }
            
            window[s.charCodeAt(left) - 'a'.charCodeAt()]--;
            left++;
        }


    }
   

    return res;
};

注意不仅要更新left 也要对window中left索引上元素进行清除

 if(i - left === p.length -1){
             if (need.toString() === window.toString()) {
                res.push(left);
            }
            
            window[s.charCodeAt(left) - 'a'.charCodeAt()]--;
            left++;
        }

时隔数月,再次刷起力扣

贵在坚持!持之以恒!


http://www.kler.cn/a/282829.html

相关文章:

  • 低代码牵手 AI 接口:开启智能化开发新征程
  • 【JAVA基础】JVM是什么?
  • 基于RK3568J多网口电力可信物联网关解决方案
  • Axure设计之文本编辑器制作教程
  • quartz
  • C++中的栈(Stack)和堆(Heap)
  • AI在医学领域:GluFormer一种可泛化的连续血糖监测数据分析基础模型
  • 自动化任务工具 | zTasker v1.97.1 绿色版
  • [Hive]四、Hive On Tez
  • 私域流量升级下的新机遇——“开源 AI 智能名片S2B2C 商城小程序”与新兴技术的融合
  • ARM/Linux嵌入式面经(二七):韶音
  • Java LeetCode 练习
  • pmp证书为何会被骂?他真的就是个垃圾证书?
  • 鸿蒙HarmonyOS开发实战: 页面传值跳转
  • Linux CMake根据环境变量和编译选项,编译多模块
  • k8s集群搭建
  • 四个版本的双向链表(C++,C++ CLI, C#, Java)
  • 奇安信渗透测试岗位三面经验分享
  • SpringBoot集成EasyExcel实现Excel文件导入/出
  • 计算机基础复习8.29
  • 力扣top300:3. 无重复字符的最长子串
  • Prompt-Tuning 和 LoRA大模型微调方法区别
  • 第二证券:三折折叠屏手机呼之欲出,14股业绩暴涨超200%
  • 大模型RAG(四)RAG工具
  • C++_CH16_Local static
  • Python知识点:如何使用PostgreSQL与Psycopg2进行数据库操作