news 2026/4/18 7:11:10

数据结构与算法: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/4/3 6:12:27

论文写不动?AI论文平台千笔写作工具 VS 锐智 AI,本科生专属神器!

随着人工智能技术的迅猛发展&#xff0c;AI辅助写作工具逐渐成为高校学生完成毕业论文的重要帮手。越来越多的学生开始借助这些工具来提升写作效率、优化内容结构&#xff0c;尤其是在开题报告、文献综述和正文撰写等环节中&#xff0c;AI的介入显著降低了学术写作的难度。然而…

作者头像 李华
网站建设 2026/3/16 4:53:44

AI+Python实操指南:用编程赋能高质量网络小说创作

在网络小说创作领域&#xff0c;灵感枯竭、更新乏力、细节打磨耗时久&#xff0c;是众多创作者面临的共同难题。随着生成式AI技术的飞速发展&#xff0c;结合编程工具实现高效、高质量的小说创作&#xff0c;已从小众尝试成为主流路径。编程不仅能实现AI生成内容的精准控制&…

作者头像 李华
网站建设 2026/4/18 6:40:44

YOLO26原创自研:低对比度场景 | 平滑的 CIoU,对其惩罚项(中心点距离和长宽比差异)进行平滑

问题分析: 1. 低对比度数据集的挑战 在低对比度图像中,物体的边缘模糊,与背景的界限不清晰。这会导致模型在预测边界框时,其中心点位置和宽高尺寸容易产生较大的不确定性和波动。标准的 IoU 对这种定位误差非常敏感,即使两个框的重叠度很高,只要中心点或尺寸稍有偏差,I…

作者头像 李华
网站建设 2026/4/16 15:39:14

颠覆性技术变革:AI驱动无代码测试新范式

一、技术架构解析&#xff1a;需求到用例的智能转化链 语义理解层 采用BERTCRF模型解析需求文档&#xff0c;精准识别"当...则..."等业务规则模式&#xff0c;提取功能点、数据约束、权限规则三维要素 图神经网络(GNN)构建状态转移路径&#xff0c;自动枚举正向/异常…

作者头像 李华
网站建设 2026/4/16 17:05:40

【完整源码+数据集+部署教程】手势分割系统源码&数据集分享 [yolov8-seg-C2f-ODConv&yolov8-seg-C2f-DCNV3等50+全套改进创新点发刊_一键训练教程_Web前端

背景意义 随着人工智能技术的迅猛发展&#xff0c;手势识别作为人机交互的重要方式&#xff0c;受到了广泛关注。手势不仅是人类交流的基本形式之一&#xff0c;更是信息传递和情感表达的重要载体。在虚拟现实、增强现实以及智能家居等领域&#xff0c;手势识别技术的应用前景广…

作者头像 李华
网站建设 2026/4/8 15:18:54

【完整源码+数据集+部署教程】钢管缺陷分割系统源码&数据集分享 [yolov8-seg-RevCol&yolov8-seg-EfficientHead等50+全套改进创新点发刊_一键训练教程_Web

背景意义 随着工业化进程的加快&#xff0c;钢管作为重要的工程材料&#xff0c;在建筑、交通、能源等多个领域得到了广泛应用。然而&#xff0c;钢管在生产和使用过程中&#xff0c;常常会出现各种缺陷&#xff0c;如气孔、咬边、裂纹、重叠、夹杂物等&#xff0c;这些缺陷不仅…

作者头像 李华