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

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

给定两个字符串 s 和 p,找到 s 中所有 p 的 

异位词

 的子串,返回这些子串的起始索引。不考虑答案输出的顺序。

示例 1:

输入: s = "cbaebabacd", p = "abc"
输出: [0,6]
解释:
起始索引等于 0 的子串是 "cba", 它是 "abc" 的异位词。
起始索引等于 6 的子串是 "bac", 它是 "abc" 的异位词。

 示例 2:

输入: s = "abab", p = "ab"
输出: [0,1,2]
解释:
起始索引等于 0 的子串是 "ab", 它是 "ab" 的异位词。
起始索引等于 1 的子串是 "ba", 它是 "ab" 的异位词。
起始索引等于 2 的子串是 "ab", 它是 "ab" 的异位词。

提示:

  • 1 <= s.length, p.length <= 3 * 104
  • s 和 p 仅包含小写字母

时间复杂度太大 md 

public List<Integer> findAnagrams(String s, String p) {char[] chars = p.toCharArray();Arrays.sort(chars); //排序完的字符串数组//创建对象String sorted = new String(chars);//键:p字符串  值:异位词下标HashMap<String, List<Integer>> map = new HashMap<>();map.put(sorted, new LinkedList<Integer>());//遍历s字符串for (int left = 0; left < s.length(); left++) {int right = left + p.length();if (right <= s.length()) {//截取s字符串的p.length()个单位String substring = s.substring(left, right);char[] chars2 = substring.toCharArray();Arrays.sort(chars2); //排序完的字符串数组String sorted2 = new String(chars2);//判断 sorted sorted2 是否一致 因为按照重排的计算if (Objects.equals(sorted2, sorted)) {map.get(sorted).add(left);}}}List<Integer> result = map.get(sorted);return result;}
/*** 哈希表 + 滑动窗口* abab  ab*/public List<Integer> findAnagrams2(String s, String p) {List<Integer> ans = new ArrayList<>();int n = s.length(), m = p.length(); //m = 2/*** 我们可以先创建一个大小为 26 的数组 c2 来统计字符串 p 的词频,* 另外一个同等大小的数组 c1 用来统计「滑动窗口」内的 s 的子串词频* 当两个数组所统计词频相等,说明找到了一个异位组,将窗口的左端点加入答案。*/int[] c1 = new int[26], c2 = new int[26];//更新c2的哈希表for (int i = 0; i < m; i++) c2[p.charAt(i) - 'a']++;for (int left = 0, right = 0; right < n; right++) {//c1[s.charAt(right) - 'a']++;//双指针if (right - left + 1 > m) c1[s.charAt(left++) - 'a']--;if (check(c1, c2)) ans.add(left);}return ans;}boolean check(int[] c1, int[] c2) {for (int i = 0; i < 26; i++) {if (c1[i] != c2[i]) return false;}return true;}//来源:leetcode 宫水三叶

相关文章:

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

给定两个字符串 s 和 p&#xff0c;找到 s 中所有 p 的 异位词 的子串&#xff0c;返回这些子串的起始索引。不考虑答案输出的顺序。 示例 1: 输入: s "cbaebabacd", p "abc" 输出: [0,6] 解释: 起始索引等于 0 的子串是 "cba", 它是 "a…...

一文读懂服务器的HBA卡

什么是 HBA 卡 HBA 卡&#xff0c;全称主机总线适配器&#xff08;Host Bus Adapter&#xff09; &#xff0c;是服务器与存储装置间的关键纽带&#xff0c;承担着输入 / 输出&#xff08;I/O&#xff09;处理及物理连接的重任。作为一种电路板或集成电路适配器&#xff0c;HBA…...

Debezium日常分享系列之:对于从Oracle数据库进行快照的性能优化

Debezium日常分享系列之&#xff1a;对于从Oracle数据库进行快照的性能优化 源数据库Kafka Connect监控测试结果 源数据库 Oracle 19c&#xff0c;本地&#xff0c;CDB数据库主机的I/O带宽为6 GB/s&#xff0c;由此主机上运行的所有数据库共享临时表空间由42个文件组成&#x…...

深度学习 Pytorch 基本优化思想与最小二乘法

在正式开始进行神经网络建模之前&#xff0c;我们还需要掌握pytorch中最核心的基础数学工具——autograd(自动微分)模块。虽然对于任何一个通用的深度学习框架都会提供许多自动优化的算法和现成的loss function&#xff0c;但如果想更深入理解神经网络&#xff0c;对深度学习的…...

C# 实现系统信息监控与获取全解析

在 C# 开发的众多应用场景中&#xff0c;获取系统信息以及监控用户操作有着广泛的用途。比如在系统性能优化工具中&#xff0c;需要实时读取 CPU、GPU 资源信息&#xff1b;在一些特殊的输入记录程序里&#xff0c;可能会涉及到键盘监控&#xff1b;而在图形界面开发中&#xf…...

Transformer详解:Attention机制原理

前言 Hello&#xff0c;大家好&#xff0c;我是GISer Liu&#x1f601;&#xff0c;一名热爱AI技术的GIS开发者&#xff0c;本系列文章是作者参加DataWhale2025年1月份学习赛&#xff0c;旨在讲解Transformer模型的理论和实践。&#x1f632; 本文将详细探讨Attention机制的原理…...

网络安全技术深度解析与实践案例

网络安全技术深度解析与实践案例 随着信息技术的飞速发展,网络已成为现代社会不可或缺的一部分。然而,网络空间的开放性也带来了各种安全隐患。为了保障网络和数据的安全,网络安全技术显得尤为重要。本文将深入探讨网络安全技术的核心要素,并通过Python代码示例展示其具体…...

JavaScript中提高效率的技巧一

1.生成随机颜色的两种方式 1&#xff09;.生成RandomHexColor const generateRandomHexColor () > {return #${Math.floor(Math.random() * 0xffffff).toString(16).padStart(6, 0)} } generateRandomHexColor() // #a8277c generateRandomHexColor() // #09c20c generat…...

美食推荐系统 协同过滤余弦函数推荐美食 Springboot Vue Element-UI前后端分离

个性化美食推荐系统 协同过滤余弦函数推荐美食 Echart数据统计 Springboot Vue Element-UI前后端分离 【亮点功能】 1.SpringbootVueElement-UIMysql前后端分离 2.Echarts图表统计数据, 直观展示数据情况 3.发表评论后&#xff0c;用户可以回复评论, 回复的评论可以被再次回复,…...

ThinkPHP 8的一对多关联

【图书介绍】《ThinkPHP 8高效构建Web应用》-CSDN博客 《2025新书 ThinkPHP 8高效构建Web应用 编程与应用开发丛书 夏磊 清华大学出版社教材书籍 9787302678236 ThinkPHP 8高效构建Web应用》【摘要 书评 试读】- 京东图书 使用VS Code开发ThinkPHP项目-CSDN博客 编程与应用开…...

Django简介与虚拟环境安装Django

目录 1.Django简介 1.1 Django 的核心特点 1.2 Django 的核心组件 1.3 Django 的应用场景 1.4 总结 2.基础环境建立 2.1 创建虚拟环境 2.1.1 使用 virtualenv 创建虚拟环境 2.1.2 使用 venv 创建虚拟环境 2.2 激活虚拟环境 2.2.1 在 Windows 上 2.2.2 在 macOS 或 …...

Redis延迟队列详解

以下是对 Redis 延迟队列的详细解释&#xff1a; 一、什么是 Redis 延迟队列 Redis 延迟队列是一种使用 Redis 实现的消息队列&#xff0c;其中的消息在被消费之前会等待一段时间&#xff0c;这段时间就是延迟时间。延迟队列常用于一些需要延迟处理的任务场景&#xff0c;例如订…...

一文大白话讲清楚webpack基本使用——2——css相关loader的配置和使用

一文大白话讲清楚webpack基本使用——2——css相关loader的配置和使用 1. 建议按文章顺序从头看是看 第一篇&#xff1a;一文大白话讲清楚啥是个webpack第二篇&#xff1a;一文大白话讲清楚webpack基本使用——1——完成webpack的初步构建然后看本篇&#xff0c;Loader的配置…...

第二代增强-采购申请屏幕增强

这篇文章可能有点乱&#xff0c;但是都是学习的一个过程&#xff0c;问题就是在ME52N修改采购申请增强字段之后&#xff0c;点击保存之后无法更新到数据库&#xff0c;困扰了很久&#xff0c;终于解决了&#xff0c;特此记录 文章目录 需求创建增强结构测试屏幕ZXM02TOP创建屏幕…...

图论DFS:黑红树

我的个人主页 {\large \mathsf{{\color{Red} 我的个人主页} } } 我的个人主页 往 {\color{Red} {\Huge 往} } 往 期 {\color{Green} {\Huge 期} } 期 文 {\color{Blue} {\Huge 文} } 文 章 {\color{Orange} {\Huge 章}} 章 DFS 算法&#xff1a;记忆化搜索DFS 算法&#xf…...

零基础一篇打通Vue极速通关教程

文章目录 写给零基础看的Vue极速掌握教程第1章 Vue简介1.1 Vue 概述1.2 MVVM 模式1.3 WebStorm开发工具1.3.1 WebStorm简介1.3.2 集成Vue开发调试工具 第2章 Vue的事件绑定2.1 Vue基本使用2.1.1 插值表达式2.1.2 注意事项 2.2 Vue事件绑定2.1.1 点击事件2.2.2 键盘事件2.2.3 移…...

商城系统中的常见 BUG

以下是商城系统中一些常见的 BUG&#xff1a; 功能与操作类 支付问题&#xff1a;如无法成功完成支付&#xff0c;支付过程中出现延迟、错误或订单重复支付等&#xff0c;还可能因网络问题导致支付失败或数据不一致。 登录 / 注册问题&#xff1a;用户在注册或登录时可能遇到…...

下定决心不去读研了。。。

大家好&#xff0c;我是苍何。 之前发表过一篇文章&#xff0c;表达了自己读研的困惑和纠结&#xff0c;得到了大家很多的建议&#xff0c;也引起了很多人的共鸣&#xff0c;在留言区分享了自己的故事&#xff0c;看着这些故事&#xff0c;我觉得都够苍何写一部小说了。 可惜苍…...

100个网络基础知识

1)什么是链接? 链接是指两个设备之间的连接。它包括用于一个设备能够与另一个设备通信的电缆类型和协议。 2)OSI 参考模型的层次是什么? 有 7 个 OSI 层&#xff1a;物理层&#xff0c;数据链路层&#xff0c;网络层&#xff0c;传输层&#xff0c;会话层&#xff0c;表示…...

庄小焱——2024年博文总结与展望

摘要 大家好&#xff0c;我是庄小焱。岁末回首&#xff0c;2024 年是我在个人成长、博客创作以及生活平衡方面收获颇丰的一年。这一年的经历如同璀璨星辰&#xff0c;照亮了我前行的道路&#xff0c;也为未来的发展奠定了坚实基础。 1. 个人成长与突破 在 2024 年&#xff0c…...

Qwen3Guard-Gen-WEB快速体验:网页界面一键审核内容安全

Qwen3Guard-Gen-WEB快速体验&#xff1a;网页界面一键审核内容安全 1. 为什么选择Qwen3Guard-Gen-WEB&#xff1f; 1.1 内容安全审核的痛点 在AI应用开发过程中&#xff0c;内容安全审核往往成为项目落地的最后一道障碍。传统方案面临三大挑战&#xff1a; 技术门槛高&…...

卫星图像分析:地物分类与变化检测的算法

卫星图像分析&#xff1a;地物分类与变化检测的算法 随着遥感技术的快速发展&#xff0c;卫星图像已成为监测地球表面变化的重要数据源。地物分类与变化检测作为卫星图像分析的核心任务&#xff0c;广泛应用于城市规划、环境监测、灾害评估等领域。本文将围绕这一主题&#xf…...

Qwen3-8B快速上手:无需复杂配置,开箱即用的本地AI解决方案

Qwen3-8B快速上手&#xff1a;无需复杂配置&#xff0c;开箱即用的本地AI解决方案 1. 为什么选择Qwen3-8B作为本地AI方案 在当今AI技术快速发展的时代&#xff0c;找到一个既强大又易于部署的本地语言模型并非易事。Qwen3-8B作为通义千问系列的最新成员&#xff0c;以其80亿参…...

软件可解释性中的模型理解与分析

在人工智能技术快速发展的今天&#xff0c;复杂机器学习模型&#xff08;如深度神经网络&#xff09;的广泛应用带来了高效决策能力&#xff0c;但也因其“黑箱”特性引发了信任危机。软件可解释性中的模型理解与分析&#xff0c;正是为了揭开模型内部运作机制&#xff0c;让开…...

SDMatte处理医学影像的潜力展示:辅助细胞与组织分割

SDMatte处理医学影像的潜力展示&#xff1a;辅助细胞与组织分割 1. 医学影像分析的新思路 显微镜下的细胞图片和医学扫描影像一直是生物医学研究的重要工具。传统的人工标注方法耗时耗力&#xff0c;而专业医学AI模型又往往需要大量标注数据和计算资源。最近我们发现&#xf…...

让静态图片活起来:EasyAnimateV5图生视频模型快速体验报告

让静态图片活起来&#xff1a;EasyAnimateV5图生视频模型快速体验报告 1. 开篇&#xff1a;一张图&#xff0c;六秒钟&#xff0c;让想象力动起来 你有没有想过&#xff0c;手机相册里那些定格的美好瞬间&#xff0c;如果能像电影一样动起来&#xff0c;会是什么样子&#xf…...

从错误码到精准定位:307系列基站定位实战排障指南

1. 当你的设备突然"失联"&#xff1a;307系列基站定位排障入门 第一次用ML307A模组调试基站定位功能时&#xff0c;我盯着串口助手连续跳出的126错误码整整半小时。就像在玩解谜游戏&#xff0c;设备明明显示网络信号满格&#xff0c;AT指令也返回了OK&#xff0c;但…...

别再手动复制SSH公钥了,Linux服务器一键从GitHub快速导入公钥伟

一、项目背景与核心价值 1. 解决的核心痛点 Navicat的数据库连接密码并非明文存储&#xff0c;而是通过AES算法加密后写入.ncx格式的XML配置文件中。一旦用户忘记密码&#xff0c;常规方式只能重新配置连接&#xff0c;效率极低。本项目只作为学习研究使用&#xff0c;不做其他…...

计及阴影遮挡效应的光伏阵列拓扑 PSO 重构优化研究(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…...

Lychee多模态重排序模型效果展示:T→T纯文本检索中长尾query高分匹配案例

Lychee多模态重排序模型效果展示&#xff1a;T→T纯文本检索中长尾query高分匹配案例 1. 引言&#xff1a;当搜索遇到“冷门”问题 想象一下&#xff0c;你在网上搜索一个非常具体、甚至有点冷门的问题。比如&#xff0c;你想知道“如何用Python代码实现一个能识别手写数字的…...