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

滑动窗口-438. 找到字符串中所有字母异位词

文章目录1.题解核心解题思路滑动窗口2.机考代码3.知识点讲解1. map.getOrDefault(key, defaultValue)2. map.put(key, value)3. map.containsKey(key)4. s.toCharArray()5. s.charAt(index)6. Scanner 相关机考必备力扣地址 中等438. 找到字符串中所有字母异位词本题代码感觉有点麻烦1.题解核心解题思路滑动窗口问题本质在字符串s中找到所有和p字母组成完全相同、仅顺序不同的子串返回它们的起始下标。算法选择滑动窗口双指针维护一个长度固定为 p.length ()的窗口在 s 上滑动用两个哈希表分别统计needp 中各字符需要的数量window当前窗口内各字符的数量用match记录已经满足数量要求的字符种类当match need.size()时说明当前窗口就是一个异位词执行流程右指针右移扩展窗口统计字符窗口长度等于 p 长度时判断是否匹配左指针右移收缩窗口移除字符统计全程只遍历 s 一次时间复杂度 O (n)classSolution{publicListIntegerfindAnagrams(Strings,Stringp){ListIntegerresultnewArrayList();if(s.length()p.length())returnresult;MapCharacter,IntegerneednewHashMap();for(charc:p.toCharArray())need.put(c,need.getOrDefault(c,0)1);MapCharacter,IntegerwindownewHashMap();intl0,r0;intmatch0;while(rs.length()){charcs.charAt(r);r;if(need.containsKey(c)){window.put(c,window.getOrDefault(c,0)1);if(window.get(c).equals(need.get(c)))match;}while(r-lp.length()){if(matchneed.size())result.add(l);chards.charAt(l);l;if(need.containsKey(d)){if(window.get(d).equals(need.get(d)))match--;window.put(d,window.get(d)-1);}}}returnresult;}}2.机考代码importjava.util.*;publicclassMain{publicstaticListIntegerfindAnagrams(Strings,Stringp){ListIntegerresultnewArrayList();// 边界s比p短不可能出现异位词直接返回空if(s.length()p.length()){returnresult;}// need记录p中每个字符需要的数量MapCharacter,IntegerneednewHashMap();for(charc:p.toCharArray()){// 有c就1没有就默认0再1need.put(c,need.getOrDefault(c,0)1);}// window记录当前滑动窗口内字符的数量MapCharacter,IntegerwindownewHashMap();intleft0,right0;// match已经满足数量要求的字符种类数intmatch0;// 右指针扩展窗口while(rights.length()){charcs.charAt(right);right;// 当前字符在p中存在才加入窗口统计if(need.containsKey(c)){window.put(c,window.getOrDefault(c,0)1);// 窗口内该字符数量 需要的数量匹配数1if(window.get(c).equals(need.get(c))){match;}}// 窗口长度 p长度时开始收缩左边界while(right-leftp.length()){// 所有字符种类都匹配记录起始索引if(matchneed.size()){result.add(left);}// 移除左边界字符chards.charAt(left);left;if(need.containsKey(d)){// 移除前刚好匹配移除后就不匹配了match--if(window.get(d).equals(need.get(d))){match--;}// 窗口内该字符数量-1window.put(d,window.get(d)-1);}}}returnresult;}publicstaticvoidmain(String[]args){ScannerscannernewScanner(System.in);// 输入格式输入两行第一行s第二行pStringsscanner.nextLine();Stringpscanner.nextLine();// 输出结果System.out.println(findAnagrams(s,p));}}3.知识点讲解1.map.getOrDefault(key, defaultValue)作用从 map 中取 key 对应的值有 key → 返回对应 value无 key → 返回你指定的默认值这里是 0目的避免null报错方便统计次数2.map.put(key, value)向 map 中存入键值对已存在 key 则覆盖更新不存在则新增3.map.containsKey(key)判断 map 中是否包含某个 key这里用来判断字符是否出现在 p 中不在则不用统计4.s.toCharArray()把字符串转为 char 数组方便遍历每一个字符5.s.charAt(index)获取字符串指定下标的字符时间 O (1)是字符串随机访问的标准用法6.Scanner相关机考必备new Scanner(System.in)开启控制台输入scanner.nextLine()读取一行输入

相关文章:

滑动窗口-438. 找到字符串中所有字母异位词

文章目录1.题解核心解题思路(滑动窗口)2.机考代码3.知识点讲解1. map.getOrDefault(key, defaultValue)2. map.put(key, value)3. map.containsKey(key)4. s.toCharArray()5. s.charAt(index)6. Scanner 相关(机考必备)力扣地址&a…...

电子教材无法下载?教育资源下载工具让智慧课堂资源触手可及

电子教材无法下载?教育资源下载工具让智慧课堂资源触手可及 【免费下载链接】tchMaterial-parser 国家中小学智慧教育平台 电子课本下载工具,帮助您从智慧教育平台中获取电子课本的 PDF 文件网址并进行下载,让您更方便地获取课本内容。 项目…...

Cortex-M能否运行Linux?架构与系统需求解析

1. Cortex-M与Linux的兼容性解析作为一名嵌入式开发工程师,我经常被问到"Cortex-M能不能跑Linux"这个问题。要回答这个问题,我们需要从处理器架构和操作系统需求两个维度来分析。Cortex-M系列是ARM公司推出的微控制器内核,主要面向…...

FanControl:重新定义你的散热管理体验

FanControl:重新定义你的散热管理体验 【免费下载链接】FanControl.Releases This is the release repository for Fan Control, a highly customizable fan controlling software for Windows. 项目地址: https://gitcode.com/GitHub_Trending/fa/FanControl.Rel…...

AI编程助手Cursor Pro功能扩展指南:开源解决方案实现开发效率提升

AI编程助手Cursor Pro功能扩展指南:开源解决方案实现开发效率提升 【免费下载链接】cursor-free-vip [Support 0.45](Multi Language 多语言)自动注册 Cursor Ai ,自动重置机器ID , 免费升级使用Pro 功能: Youve reach…...

PyTorch 2.8视频生成环境搭建:FFmpeg 6.0+Diffusers开箱即用教程

PyTorch 2.8视频生成环境搭建:FFmpeg 6.0Diffusers开箱即用教程 1. 环境准备与快速验证 在开始视频生成项目前,我们需要确保基础环境已经正确配置。本教程使用的镜像已经预装了所有必要的组件,包括: 核心框架:PyTor…...

QMCFLAC2MP3深度解析:从格式解密到跨设备音频转换的全流程实践

QMCFLAC2MP3深度解析:从格式解密到跨设备音频转换的全流程实践 【免费下载链接】qmcflac2mp3 直接将qmcflac文件转换成mp3文件,突破QQ音乐的格式限制 项目地址: https://gitcode.com/gh_mirrors/qm/qmcflac2mp3 问题引入:破解音乐格式…...

AI视频修复与字幕去除工具:突破硬字幕处理瓶颈的全流程解决方案

AI视频修复与字幕去除工具:突破硬字幕处理瓶颈的全流程解决方案 【免费下载链接】video-subtitle-remover 基于AI的图片/视频硬字幕去除、文本水印去除,无损分辨率生成去字幕、去水印后的图片/视频文件。无需申请第三方API,本地实现。AI-base…...

semi-utils:批量添加专业水印的智能解决方案

semi-utils:批量添加专业水印的智能解决方案 【免费下载链接】semi-utils 一个批量添加相机机型和拍摄参数的工具,后续「可能」添加其他功能。 项目地址: https://gitcode.com/gh_mirrors/se/semi-utils 作为一名摄影爱好者或专业摄影师&#xff…...

怎么样辨别生活中遇到的那些理财平台的真假?

怎么样辨别生活中遇到的那些理财平台的真假?凡是声称高息保本的投资理财平台极有可能是黑平台。尝试用手机官方应用商城搜索理财软件,如果是别人通过聊天软件发链接给你安装的,不是正规手机应用商城下载的,且在应用商城无法搜索到…...

MT管理器安卓版,APK逆向修改神器,APP提取APK教程。

今天算是比较郁闷的一天,作为互联网上算是最老的一批写用户,如果你是带人学习互联网的大佬,估计你都会放弃我这种年龄段的人,不过我还是活下来了,像我们这样的80、90后还有一大批活下来了。 AI出来了给人的引影响很大…...

技术债务管理:如何与产品经理就“还债”达成共识?

在追求快速迭代和功能交付的软件开发浪潮中,技术债务如同潜伏在系统深处的“慢性病”,悄然累积,最终可能引发系统脆弱、交付迟滞、团队士气低落等一系列并发症。对于软件测试从业者而言,技术债务带来的影响尤为直接:测…...

实战应用:基于快马平台开发企业内网服务可用性监控系统

今天想和大家分享一个最近用InsCode(快马)平台快速实现的实用项目——企业内网服务可用性监控系统。这个需求来源于我们公司内部的实际痛点:随着服务器数量增加,经常出现某个服务端口异常但没人及时发现的情况。 1. 项目背景与需求分析 我们公司有几十…...

Awoo Installer:破解Switch游戏安装限制的高性能解决方案

Awoo Installer:破解Switch游戏安装限制的高性能解决方案 【免费下载链接】Awoo-Installer A No-Bullshit NSP, NSZ, XCI, and XCZ Installer for Nintendo Switch 项目地址: https://gitcode.com/gh_mirrors/aw/Awoo-Installer Awoo Installer是一款专为破解…...

想了解欧拉好猫参数?这篇文章给你详细答案!

在当今新能源汽车市场蓬勃发展的背景下,欧拉好猫凭借其独特的魅力,在众多车型中脱颖而出,吸引了众多消费者的目光。以下将对欧拉好猫的相关参数及技术亮点进行详细解析。外观设计与尺寸欧拉好猫采用复古未来主义的设计风格,圆润的…...

QGIS里怎么加载NASA的SRTM高程数据?从下载到3D可视化的保姆级教程

QGIS实战:从NASA SRTM高程数据下载到3D地形可视化全流程指南 当你第一次在QGIS中看到那些起伏的山脉、蜿蜒的河谷以三维形式呈现时,那种将地理数据转化为视觉故事的成就感是无与伦比的。NASA的SRTM(航天飞机雷达地形测绘任务)高程…...

iMeta | 浙江农科院卢立志/曾涛联合中南大学湘雅医院揭示人参皂苷Rg3缓解肝脏铁死亡的新机制

点击蓝字 关注我们一种生物活性人参皂苷改善非酒精性脂肪性肝炎中氧化磷脂积累引起的肝细胞铁死亡iMeta主页:http://www.imeta.science研究论文● 原文: iMeta(IF 33.2, 中科院双一区Top)● 英文题目: A bioactive ginsenoside alleviates hepatocellular ferroptos…...

【ComfyUI】Qwen-Image-Edit-F2P用于影视概念设计:快速生成角色面部概念图

ComfyUI Qwen-Image-Edit-F2P用于影视概念设计:快速生成角色面部概念图 1. 引言:当AI画笔遇见影视美术 想象一下这个场景:一部新剧的美术指导正在为“饱经风霜的西部枪手”这个角色发愁。导演想要一张能瞬间抓住观众眼球的脸,一…...

Phi-3-mini-4k-instruct快速上手:Ollama部署指南,开启你的第一个AI项目

Phi-3-mini-4k-instruct快速上手:Ollama部署指南,开启你的第一个AI项目 1. 认识Phi-3-mini-4k-instruct:轻量级AI助手 Phi-3-mini-4k-instruct是一个仅有38亿参数的轻量级AI模型,由微软团队开发。虽然体积小巧,但它在…...

Phi-3-mini-4k-instruct-gguf免配置环境:开箱即用的Web UI,开发者5分钟上手

Phi-3-mini-4k-instruct-gguf免配置环境:开箱即用的Web UI,开发者5分钟上手 1. 认识Phi-3-mini-4k-instruct-gguf Phi-3-mini-4k-instruct-gguf是微软Phi-3系列中的轻量级文本生成模型GGUF版本。这个模型特别适合处理问答、文本改写、摘要整理和简短创…...

Realistic Vision V5.1 Streamlit界面源码解析:如何扩展自定义摄影滤镜

Realistic Vision V5.1 Streamlit界面源码解析:如何扩展自定义摄影滤镜 1. 项目背景与技术特点 Realistic Vision V5.1是目前SD 1.5生态中最顶级的写实风格模型之一,能够生成媲美专业单反相机拍摄的人像作品。本项目通过Streamlit框架构建了直观的交互…...

ROS小车导航总是一顿一顿的?试试用yocs_smoother_velocity给速度上个‘柔顺剂’

ROS导航卡顿难题:用yocs_smoother_velocity实现丝滑运动控制 当你看着辛苦搭建的ROS导航机器人像醉汉一样踉踉跄跄地移动,急停急转让人心惊肉跳时,是否怀疑过人生?这背后往往不是路径规划算法的问题,而是速度指令的&qu…...

Android 11+ 适配实战:破解TextToSpeech ‘speak failed: not bound to TTS engine‘ 的权限与引擎绑定之谜

1. 当语音突然沉默:Android 11的TTS报错之谜 那天我正在调试一个天气预报应用,当代码执行到语音播报"今天晴转多云"时,控制台突然抛出红字警告:speak failed: not bound to TTS engine。这个错误在Android 10及以下版本…...

重生之我用 AI 复活了我的同事

阅读本文大概需要 2.8 分钟。在写这篇文章之前先解答上篇文章评论区反映的两个问题:第一个问题,有人读完文章说,张哥,那以后是用 AI 还是不用呢?当然要用了,而且是鼓励大家全面使用。我文章本意是 AI 发展之…...

Multisim新手必看:用差分放大电路课设,手把手教你搞定仿真与波形分析

Multisim新手必看:用差分放大电路课设,手把手教你搞定仿真与波形分析 第一次打开Multisim时,满屏的元器件和复杂的参数设置确实容易让人望而生畏。记得我大三做模电课设时,光是找齐差分放大电路需要的元件就花了半小时&#xff0c…...

别再只用CEEMDAN了!信号分解后,这7种熵指标到底该怎么选?(能量熵/近似熵/模糊熵对比)

信号分解后熵指标选型指南:从能量熵到多尺度排列熵的深度解析 在信号处理领域,CEEMDAN等分解方法早已成为研究人员的标准工具包——它们像精密的滤波器,将复杂信号拆解为一系列物理意义明确的IMF分量。但当我们面对这些分解后的子信号时&…...

【2026年阿里巴巴春招- 4月1日-开发岗-第一题- 数组对齐】(题目+思路+JavaC++Python解析+在线测试)

题目内容 笨蛋同学拿到两个长度均为 nnn 的非负整数数组 a1,a2,…,ana_1,a_2,\dots,a_na...

YOLOv8实战:从数据增强到模型部署的完整Pipeline(附代码)

YOLOv8实战:从数据增强到模型部署的完整Pipeline(附代码) 计算机视觉领域的目标检测技术近年来取得了显著进展,其中YOLO系列算法因其高效性和准确性备受关注。作为该系列的最新成员,YOLOv8在保持实时检测速度的同时&am…...

Phi-4-mini-reasoning保姆级教学:Windows WSL2环境部署全流程

Phi-4-mini-reasoning保姆级教学:Windows WSL2环境部署全流程 1. 模型介绍 Phi-4-mini-reasoning是微软推出的3.8B参数轻量级开源模型,专为数学推理、逻辑推导和多步解题等强逻辑任务设计。这个模型主打"小参数、强推理、长上下文、低延迟"的…...

如何在3小时内构建你的第一个炉石传说AI机器人?Hearthrock终极指南

如何在3小时内构建你的第一个炉石传说AI机器人?Hearthrock终极指南 【免费下载链接】hearthrock Hearthstone Bot Engine 项目地址: https://gitcode.com/gh_mirrors/he/hearthrock Hearthrock是一个革命性的炉石传说AI引擎,专为人工智能研究者和…...