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

leedcode:找到字符串中所有字母异位词

问题:给定两个字符串 s 和 p,找到 s 中所有 p 的 异位词 的子串,返回这些子串的起始索引。不考虑答案输出的顺序。

package com.text;import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;import com.alibaba.fastjson.JSONObject;public class findAnagrams {public static void main(String[] args) {findAnagrams("cbaebabacd","abc");}public static List<Integer> findAnagrams(String s, String p) {List<Integer> list=new ArrayList<Integer>();int slen=s.length();int plen=p.length();//p的长度大于s就返回if(plen>slen){return list;}//将p的字符存储到map中,key是字符,value是出现的次数Map<Character,Integer> pMap=new HashMap<Character,Integer>();for(int i=0;i<p.length();i++){Integer pNum=pMap.getOrDefault(p.charAt(i), 0);pMap.put(p.charAt(i),pNum+1);}//截取s串的起始坐标int endIndex=0;//存储截取的S串中字符出现的次数Map<Character,Integer> sMap=new HashMap<Character,Integer>();while(endIndex+plen<=slen){String substr= s.substring(endIndex,endIndex+plen);//下标等于0的时候需要全量存储if(endIndex==0){for(int i=0;i<substr.length();i++){Integer sNum=sMap.getOrDefault(substr.charAt(i), 0);sMap.put(substr.charAt(i),sNum+1);}}else{//不等于0的时候相当于下标右移//前一个元素出现次数需要减1,如果次数等于0需要移除,否则影响相等的校验//最后一个需要加1char removeKey = s.charAt(endIndex-1);Integer sNum=sMap.getOrDefault(removeKey, 0);if(sNum-1==0) {sMap.remove(removeKey);}else {sMap.put(removeKey,sNum-1);}char addKey = substr.charAt(plen-1);Integer sNum1=sMap.getOrDefault(addKey, 0);sMap.put(addKey,sNum1+1);}//判断是否相等两个map//会进行key和value的全变比较if(sMap.equals(pMap)) {list.add(endIndex);}endIndex++;}System.out.println(JSONObject.toJSONString(list));return list;}}

http://www.lryc.cn/news/577194.html

相关文章:

  • 【Actix Web】Rust Web开发JWT认证
  • C#跨线程共享变量指南:从静态变量到AsyncLocal的深度解析
  • Excel转pdf实现动态数据绑定
  • Java设计模式之结构型模式(外观模式)介绍与说明
  • BUUCTF在线评测-练习场-WebCTF习题[MRCTF2020]你传你[特殊字符]呢1-flag获取、解析
  • FPGA实现CameraLink视频解码转SDI输出,基于LVDS+GTX架构,提供2套工程源码和技术支持
  • AWS 开源 Strands Agents SDK,简化 AI 代理开发流程
  • python:运行时报错 No module named flask
  • CAU数据挖掘 支持向量机
  • Instruct-GPT奖励模型的损失函数与反向传播机制解析
  • Linux 系统管理:高效运维与性能优化
  • C语言之文件操作详解(文件打开关闭、顺序/随机读写)
  • 本地部署OpenHands AI助手,自动化编程提升开发效率
  • 如何提升 iOS App 全链路体验?从启动到退出的优化调试流程
  • Objective-c把字符解析成字典
  • python包管理工具uv VS pip
  • 在Flutter中生成App Bundle并上架Google Play
  • camera调试:安卓添加xml注册
  • 二刷 苍穹外卖day09
  • 【硬核数学 · LLM篇】3.1 Transformer之心:自注意力机制的线性代数解构《从零构建机器学习、深度学习到LLM的数学认知》
  • 借助 Wisdom SSH,实现 Linux 用户组与权限的精细化智能管控
  • DataGrip测试连接时出现报错解决方案
  • 谷歌高调宣布,Gemini 2.5 Pro正式版,绘制常见图表(折线图、柱状图、PPT等),国内直接使用
  • 将 h264+g711a存为 mp4文件,记录
  • uniapp+vue2 ba-tree-picker下拉项多选 树形层级选择器(支持单选、多选、父级选择、映射)
  • SAP月结问题9-FAGLL03H与损益表中研发费用金额不一致(FAGLL03H Bug)
  • 【数据结构中的位运算】
  • 堆排序实现及复杂度分析
  • AWS WebRTC:通过shell分析并发启动master后产生的日志文件
  • 腾讯云空间,高性能显卡云,安装xinference报错,pip install 空间不够用了