当前位置: 首页 > 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)

http://www.dtcms.com/a/160574.html

相关文章:

  • 参数规模:衡量大语言模型体量的标尺
  • 互联网的下一代脉搏:深入理解 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带宽性能测试
  • Bolt.diy 一键部署,“一句话”实现全栈开发
  • GPUStack昇腾Atlas300I duo部署模型DeepSeek-R1【GPUStack实战篇2】
  • Java安全之cc链学习集合
  • 【MySQL 】MySQL 安装自记录全程-详细 (mysql-installer-community-8.0.42.0.msi)
  • XLSX.utils.sheet_to_json设置了blankrows:true,但无法获取到开头的空白行
  • 毫米波振荡器设计知识笔记
  • 快速排序及其在Unity游戏开发中的应用
  • 在旧版本中打开Anylogic模型
  • 纯净无噪,智见未来——MAGI-1本地部署教程,自回归重塑数据本质
  • GAMES202-高质量实时渲染(homework1)