news 2026/7/7 10:54:47

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

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
hot100 438.找到字符串中所有字母异位词

思路:滑动窗口。

对于主串s和子串p,设n是子串p的长度。

一、方法一:定长滑动窗口。枚举主串s的所有长为n的子串s',在滑动的同时维护s’中的每种字母的出现次数。如果s'的每种字母的出现次数和p的每种字母的出现次数都相同,那么s'是p的异位词,并把s'的左端点下标加入答案。

附代码:

class Solution { public List<Integer> findAnagrams(String s, String p) { //统计p的每种字母的出现次数 int[] cntp = new int[26]; for(char c : p.toCharArray()){ cntp[c - 'a']++; //统计p的字母 } List<Integer> res = new ArrayList<>(); int[] cnts = new int[26]; //统计s的长度为p.length()的子串s'的每种字母的出现次数 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的每种字母的出现次数都相同 res.add(left); //s'的左端点下标加入答案 } cnts[s.charAt(left) - 'a']--; //左端点字母离开窗口 } return res; } }

二、方法二:不定长滑动窗口。枚举子串s'的右端点,如果发现s’其中一种字母的出现次数大于p的这种字母的出现次数,则右移s'的左端点(缩小窗口)。如果发现s'的长度等于p的长度,则说明s'的每种字母的出现次数等于p的每种字母的出现次数,即s'是p的异位词。

证明:内层循环结束后,s'的每种字母的出现次数都小于等于p的每种字母的出现次数。如果s’的其中一种字母的出现次数比p的小,那么s'的长度必然小于p的长度。所以只要s'的长度等于p的长度,就说明s'的每种字母的出现次数和p的每种字母的出现次数都相同,就说明s'是p的异位词,于是把s'的左端点下标加入答案。

代码实现时,可以把cnts和cntp合并成一个cnt:

(1)对于p的字母c,把cnt[c]加一。

(2)对于s的字母c,把cnt[c]减一。

(3)如果cnt[c]小于0,则说明窗口中的字母c的个数比p的多,右移左端点。

附代码:

class Solution { public List<Integer> findAnagrams(String s, String p) { //统计p的每种字母的出现次数 int[] cnt = new int[26]; for(char c : p.toCharArray()){ cnt[c - 'a']++; } List<Integer> res = new ArrayList<>(); int left = 0; for(int right = 0;right < s.length();right++){ int c = s.charAt(right) - 'a'; cnt[c]--; //右端点字母进入窗口 while(cnt[c] < 0){ //字母c太多了 cnt[s.charAt(left) - 'a']++; //左端点字母离开窗口 left++; } if(right - left + 1 == p.length()){ //s'和p的每种字母的出现次数都相同 res.add(left); //s'的左端点下标加入答案 } } return res; } }
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/7 17:40:39

第三版:3、LangGraph之WorkFlow

WorkFlow介绍 工作流是 LLM 和工具通过预定义的代码路径进行编排的系统。另一方面&#xff0c;智能体是 LLM 动态指导其自身流程和工具使用的系统&#xff0c;它们都是构建复杂的大模型应用系统的核心组件。 LangGraph的工作流通过有向图(Directed Graph)定义&#xff0c;由节…

作者头像 李华
网站建设 2026/7/7 10:37:53

视觉SLAM十四讲解读-(v2.p84)李代数求导

视觉SLAM十四讲解读-(v2.p84)李代数求导1. 问题背景和目标 在考虑 SO(3)SO(3)SO(3) 上的情况时&#xff0c;对空间点 p\boldsymbol{p}p 进行旋转得到 RpR\boldsymbol{p}Rp&#xff0c;目标是计算旋转之后点的坐标相对于旋转矩阵 RRR 的导数 ∂(Rp)∂R\frac{\partial(R\boldsymb…

作者头像 李华
网站建设 2026/7/7 10:35:14

好写作AI:传统写作与智能辅助的融合,一场正在发生的范式转变

当古老的书写技艺遇见前沿的人工智能&#xff0c;一场静默而深刻的范式革命正在学术写作领域展开——从“笔耕不辍”到“人机共舞”。好写作AI官方网址&#xff1a;https://www.haoxiezuo.cn/传统学术写作是一项高度依赖个人素养的“手工技艺”&#xff1a;研究者独立完成从文献…

作者头像 李华
网站建设 2026/7/7 11:14:26

好写作AI:AI写作工具的功能演进与未来学术助手展望

从“拼写检查器”到“研究协作者”&#xff0c;AI在学术领域的角色正经历一场深刻的进化。这不仅是工具的升级&#xff0c;更是研究范式的重塑。好写作AI官方网址&#xff1a;https://www.haoxiezuo.cn/AI写作工具的发展&#xff0c;清晰地呈现出一条从浅层辅助到深度赋能的演进…

作者头像 李华