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

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.xdnf.cn/news/2431.html

相关文章:

  • ISIS的由于L1产生的一系列问题
  • 实验:串口通信
  • 02.02、返回倒数第 k 个节点
  • 2 商户查询缓存
  • 设计一个食品种类表
  • 【算法】回溯法
  • 【锂电池剩余寿命预测】Transformer锂电池剩余寿命预测(Pytorch完整源码和数据)
  • 攻击 WordPress 目标的 5 种方法
  • AtCoder Beginner Contest 242 G - Range Pairing Query (莫队)
  • 解锁现代生活的健康密码
  • 杨洋出席青岛啤酒白啤品牌活动 共赴生活美学之旅
  • 2025年应用物理与电子电气国际会议(IACSEM 2025)
  • 【Code Sprint】第一章 从零开始
  • 【Java学习笔记】类与对象
  • 前端零基础入门到上班:【Day8】JavaScript 基础语法入门
  • 【数据可视化-38】基于Plotly得泰坦尼克号数据集的多维度可视化分析
  • 给应用加速:Spring Boot集成缓存 (Caffeine Redis) 实战
  • Maven 依赖范围(Scope)详解
  • Spring Boot中@RequestParam、@RequestBody、@PathVariable的区别与使用
  • Servlet
  • AI如何重塑DDoS防护行业?六大变革与未来展望
  • 可以隐藏列的表格
  • spark 课程总结
  • 影楼精修-皮肤瑕疵祛除算法解析
  • 安卓基础(适配器和RecyclerView )
  • 富文本展示前使用DOMPurify进行文本过滤
  • T 电梯维修作业考试精选题目
  • AI大模型知识与医疗项目实践 - Java架构师面试实战
  • Haply MinVerse触觉3D 鼠标—沉浸式数字操作,助力 3D 设计与仿真
  • DeepSeek系列(10):与其他AI工具协同