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

LeetCode热题100--438.找到字符串中所有字母异位词--中等

1. 题目

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

示例 1:
输入: s = “cbaebabacd”, p = “abc”
输出: [0,6]
解释:
起始索引等于 0 的子串是 “cba”, 它是 “abc” 的异位词。
起始索引等于 6 的子串是 “bac”, 它是 “abc” 的异位词。

示例 2:
输入: s = “abab”, p = “ab”
输出: [0,1,2]
解释:
起始索引等于 0 的子串是 “ab”, 它是 “ab” 的异位词。
起始索引等于 1 的子串是 “ba”, 它是 “ab” 的异位词。
起始索引等于 2 的子串是 “ab”, 它是 “ab” 的异位词。

2. 题解

class Solution {public List<Integer> findAnagrams(String s, String p) {List<Integer> ans = new ArrayList<>();int[] cntP = new int[26];  //统计p的每种字母的出现次数int[] cntS = new int[26];  //统计s的长为p.length()的子串s'的每种字母的出现次数for (char c : p.toCharArray()){cntP[c - 'a']++;  //统计p的字母}for (int right = 0; right < s.length(); right++){cntS[s.charAt(right) - 'a']++;  //右端点字母进入窗口int left = right - p.length() + 1;if (left < 0){  //窗口长度不足p.length()continue;}if (Arrays.equals(cntS,cntP)){  //s'和p的每种字母的出现次数都相同ans.add(left);  //s'左端点下标加入答案}cntS[s.charAt(left) - 'a']--;  //左端点字母离开窗口}return ans;}
}

3. 解析

出自这位老师:灵茶山艾府:两种方法:定长滑窗/不定长滑窗(Python/Java/C++/C/Go/JS/Rust)

相关文章:

  • 参数规模:衡量大语言模型体量的标尺
  • 互联网的下一代脉搏:深入理解 QUIC 协议
  • iterm2 使用 zmodem(lrzsz)传输文件
  • 大模型——Spring.new快速构建AI驱动的定制化商业应用
  • Linux系统编程 day11 锁 (两天没有更新了,中期完就休息了)
  • 开关电源实战(六)ADDC反激电源
  • 【MySQL数据库】函数操作
  • PH热榜 | 2025-04-27
  • 论文速报《ChatBEV:理解BEV地图的视觉语言模型新突破》
  • H5实现一个二维码生成器页面
  • 【MySQL】Java代码操作MySQL数据库 —— JDBC编程
  • 接口测试详解
  • 【Luogu】动态规划六
  • vue3子传父——v-model辅助值传递
  • C++ ——引用
  • 详细PostMan的安装和基本使用方法
  • 低压电工证考试的实操部分主要考察哪些内容?
  • 邀请函|2025 Altair区域技术交流会华北站,报名开启!
  • 安卓基础(适配器和RecyclerView )
  • 【HPC存储性能测试】02-ior带宽性能测试
  • 杜前任宁波中院代理院长,卸任宁波海事法院院长
  • 报告显示2024年全球军费开支增幅达冷战后最大
  • 中公教育薪酬透视:董监高合计涨薪122万,员工精简近三成
  • 人民时评:投资于人,促高质量充分就业
  • 加拿大驾车撞人事件遇难人数升到11人
  • 银川市长信箱被指“已读乱回”,官方通报:对相关责任人问责处理