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

438 找到字符串中所有的字母异位词

滑动窗口 卡住短的数组 向长的数组进行比较 出现字符次数相同的就是一组异位词、

class Solution {

    public List<Integer> findAnagrams(String s, String p) {

         //存储结果

        List<Integer> result = new ArrayList<>();

        //charP存储p中字母出现的个数

        int [] charP = new int[26];

        //charS存储存在p.length中p异味词的次数

        int [] charS = new int[26];

        //先统计p中出现的词的个数

        for (int c : p.toCharArray()) {

            charP[c - 'a']++;

        }

        //右端点进入字符数组s

        for (int right = 0; right < s.length(); right++) {

            charS[s.charAt(right) - 'a']++;

            //计算左窗口的位置

            int left= right - p.length() + 1;

            //窗口大小小于0的话 继续遍历

            if (left<0){

                continue;

            }

            //如果两个字符数组字符出现的次数相同

            if (Arrays.equals(charS, charP)){

                //将左窗口添加进去

                result.add(left);

            }

           

            //窗口右移

            charS[s.charAt(left) - 'a']--;

        }

       

        return result;

    }

}

相关文章:

  • 04性能监控与调优篇(D1_学习前言)
  • 如何利用OGG WEB页面进行MySQL数据库数据复制的配置
  • HTML之JavaScript常见事件
  • 4.buuctf [SWPU2019]Web1及知识点
  • matlab基于梯度下降和软阈值化的去噪算法
  • 民用无人驾驶航空器操控员考试
  • C#: String s = new String(“Hello“)无法编译?编程语言字符集有两个?为什么这种变量名“\u0061\u0062”都能编译通过?
  • netcore https配置
  • node.js + html调用ChatGPTApi实现Ai网站demo(带源码)
  • Ae 效果详解:蒙尘与划痕
  • 类和对象详解(下)-----运算符重载
  • [Vivado报错] [Runs 36-527] DCP does not exist
  • matlab模拟风场的随机脉动风
  • 升级 SpringBoot3 全项目讲解 — JOOQ 为什么全面超越了 Mybatis?
  • HarmonyOS NEXT网络状态监听HTTP和RCP请求网络
  • 【软考】【2025年系统分析师拿证之路】【啃书】第十一章 软件需求工程(十二)
  • 使用 Ansys MotorCAD 进行轴向磁通电机设计
  • wordpress get_footer();与wp_footer();的区别的关系
  • Node.js 中的 fs 模块详解
  • 一个n*m的二维非零tensor,如何将小于0.5的元素设置为零
  • 净海护渔,中国海警局直属第一局开展伏季休渔普法宣传活动
  • 应急管理部派出工作组赴山西太原小区爆炸现场指导救援处置
  • 癌症来临前,可能伪装成这几种常见病,千万别大意
  • 王毅:妥协退缩只会让霸凌者得寸进尺
  • 太好玩了!坐进大卫·霍克尼的敞篷车进入他画笔下的四季
  • 上海灵活就业人员公积金新政有哪些“创新点”?