news 2026/5/12 4:39:59

数据结构与算法:Find All Anagrams in a String

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
数据结构与算法:Find All Anagrams in a String

给出两个字符串s和p,当s中存在p的异构串时,返回所有s中对应的所有起点位置。

Example 1:

Input: s="cbaebabacd", p="abc"Output:[0,6]Explanation: The substring with start index=0is"cba",whichis an anagram of"abc".The substring with start index=6is"bac",whichis an anagram of"abc".

Example 2:

Input: s="abab", p="ab"Output:[0,1,2]Explanation: The substring with start index=0is"ab",whichis an anagram of"ab".The substring with start index=1is"ba",whichis an anagram of"ab".The substring with start index=2is"ab",whichis an anagram of"ab"
importjava.util.ArrayList;importjava.util.HashMap;importjava.util.List;importjava.util.Map;publicclassCode_FindAllAnagramsInAString{publicstaticList<Integer>findAnagrams(Strings,Stringp){List<Integer>ans=newArrayList<>();char[]str=s.toCharArray();char[]ptr=p.toCharArray();intM=p.length();Map<Character,Integer>map=newHashMap<>();intall=M;intN=str.length;if(M>N){returnans;}for(inti=0;i<M;i++){if(map.containsKey(ptr[i])){map.put(ptr[i],map.get(ptr[i])+1);}else{map.put(ptr[i],1);}}for(intend=0;end<M-1;end++){if(map.containsKey(str[end])){intcount=map.get(str[end]);if(count>0){all--;}map.put(str[end],count-1);}}// map表相当于一张欠表。 别人欠我多少。// 比如p字符串 abc. 那么map的数据是 a,1; b,1; c,1; 别人欠我1个// a, 欠1个b,欠1个c. all变量表示一共欠多少。for(intend=M-1,start=0;end<N;end++,start++){if(map.containsKey(str[end])){intcount=map.get(str[end]);if(count>0){all--;}map.put(str[end],count-1);}if(all==0){ans.add(start);}if(map.containsKey(str[start])){intcount=map.get(str[start]);if(count>=0){all++;}map.put(str[start],count+1);}}returnans;}}
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/2 21:56:37

在VisualStudio中配置汇编开发环境

1)常见的汇编IDE MASM:并非独立IDE,是经典x86汇编编译器,作为VS配置汇编环境的核心组件,是Windows下汇编开发的基础工具。 VS:即VisualStudio,微软官方集成开发环境,原生支持x86/x64汇编开发,可直接集成MASM编译器,无需额外配置基础编译环境,还能实现C/C++与汇编代码…

作者头像 李华
网站建设 2026/4/27 5:29:28

GitHub 热榜项目 - 日榜(2026-02-10)

GitHub 热榜项目 - 日榜(2026-02-10) 生成于&#xff1a;2026-02-10 统计摘要 共发现热门项目&#xff1a; 13 个 榜单类型&#xff1a;日榜 本期热点趋势总结 本期GitHub热榜彰显AI自主代理技术如火如荼&#xff0c;聚焦网络安全如Shannon的高效漏洞挖掘、金融分析如Dext…

作者头像 李华
网站建设 2026/5/6 1:50:43

AI辅助个人项目的质量保障:开发者自测试的智能化实践

引言&#xff1a;自测试的范式革新 在敏捷开发与持续交付&#xff08;CI/CD&#xff09;成为主流的当下&#xff0c;个人开发者常面临测试覆盖不足、回归效率低、环境适配复杂等痛点。传统手工测试在个人项目中易沦为“形式主义”&#xff0c;而AI驱动的自动化测试正从企业级方…

作者头像 李华
网站建设 2026/5/10 12:41:46

教育领域AI测试:在线编程作业的自动评分

一、技术架构与核心模块的测试挑战 在线编程作业自动评分系统通常采用“沙箱隔离-静态分析-动态测试-结果比对”四层架构。沙箱隔离层需通过Docker容器或安全虚拟机实现代码执行环境隔离&#xff0c;测试需覆盖资源限制&#xff08;CPU/内存&#xff09;、恶意代码拦截&#x…

作者头像 李华
网站建设 2026/5/10 20:12:33

【完整源码+数据集+部署教程】条形码图像分割系统源码&数据集分享 [yolov8-seg-SPDConv&yolov8-seg-swintransformer等50+全套改进创新点发刊_一键训练教程

背景意义 随着信息技术的迅猛发展&#xff0c;条形码作为一种重要的商品识别和信息管理工具&#xff0c;广泛应用于零售、物流、制造等多个领域。条形码不仅提高了商品管理的效率&#xff0c;还为企业的供应链管理提供了重要支持。然而&#xff0c;传统的条形码识别方法在复杂环…

作者头像 李华
网站建设 2026/5/1 9:16:17

基于Java的微型水电站监管智慧管理系统的设计与实现全方位解析:附毕设论文+源代码

1. 为什么这个毕设项目值得你 pick ? 微型水电站监管智慧管理系统是一个集成了多项功能模块的综合性平台&#xff0c;旨在为普通员工和部门领导提供便捷的数据管理和决策支持工具。系统的主要优势在于其创新性和实用性&#xff1a;首先&#xff0c;它涵盖了从电站管理到设备维…

作者头像 李华