Leetcode 字符串的排列【中等】
这个题用集合类去实现的时候踩了好几个坑containsAll()方法是元素维度跟个数无关{a,b}contailsAll{a,b,b}居然返回trueremove方法指定元素类型删除一次只删除一个元素。比如{a,b,b}执行一次remove(new Character(b))以后剩下{a,b}而不是把b全删了remove这里还有个坑删除b的时候你不能remove(b)这样写因为底层会发生类型转换char类型给你变成int类型变成了删除第int个元素。。法一滑动窗口维护s1长度大小的滑动窗口在s2身上滑动每次步长为1。对于每个滑动窗口内部维护一个把s1每个字符都放进去的list集合遍历一个元素就remove一个如果窗口遍历完list集合为空就说明匹配成功了。class Solution { public boolean checkInclusion(String s1, String s2) { ListCharacter list1 new ArrayList(); //答案 boolean ansfalse; //子串入list for(int i0; is1.length();i){ list1.add(s1.charAt(i)); } //主串窗口方式遍历步长1 for(int i0;is2.length()-s1.length();i){ ListCharacter temp new ArrayList(list1); //浅拷贝 for(int offset0;offsets1.length();offset){ //注意1remove(b)这样写的话底层会发生数据类型转换b给你转成int变成remove第int个元素 //所以必须用包装类 //注意2list指定元素的remove只会移除一个比如{a,b,b}移除一次b只会删除一个b不会都删了 temp.remove(new Character(s2.charAt(ioffset))); } if (temp.size()0){ anstrue; break; } } return ans; } }时间复杂度O(m×n)m和n分别是主串和子串的长度空间复杂度O(n)n是子串的长度会超时。想出来法一就可以了官方给的法二有问题法二优化滑动窗口 有问题法一相当于暴力搜索优化暴力搜索的思路就是想一想下一轮是否能利用上一轮的信息。观察滑动窗口的滑动方式就能发现下一轮其实就是把上一轮的第一个元素给剔除再引入一个新元素罢了中间c c d a是不变的也就是可以重复利用的。这样时间复杂度就可以变成大概O(mn)。不能在上一版本的代码上改了因为上一轮的版本不能计数remove操作如果删掉了两个是无感的。要找一个容器来计数首先想到hashmap但是判断匹配的时候判断标准就得是所有key的value都得是0这样又要遍历hashmap官方题解是存在数组里利用了数组的Arrays.equals方法其实这样时间复杂度也是O(m×n)只不过没把Arrays.equals的时间复杂度算进来罢了。class Solution { public boolean checkInclusion(String s1, String s2) { if(s1.length()s2.length()) return false; int[] nums1 new int[26]; int[] nums2 new int[26]; //s1作为用于比较的参考 for(int i0;is1.length();i){ nums1[s1.charAt(i)-a]; } //第一个窗口需要单独处理 for(int i0;is1.length();i){ nums2[s2.charAt(i)-a]; } if(Arrays.equals(nums1,nums2)) return true; //主串滑动窗口步长为1 for(int i1;is2.length()-s1.length();i){ //进入新一轮最前面的一个元素退出 nums2[s2.charAt(i-1)-a]--; //进入窗口一个新元素 nums2[s2.charAt(is1.length()-1)-a]; if(Arrays.equals(nums1,nums2)) return true; } return false; } }

相关新闻

Oracle 11.2 ODBC驱动Windows安装配置与避坑指南

Oracle 11.2 ODBC驱动Windows安装配置与避坑指南

简介:Oracle ODBC驱动(instantclient-odbc-nt-11.2.0.3.0)是Windows平台下连接Oracle数据库的关键中间件,面向使用PowerDesigner、ERStudio等数据建模工具,或需通过ODBC方式访问Oracle的开发与运维人员。它解决的是应用…

2026/10/10 2:24:57 阅读更多 →
吉林靠谱的开荒保洁专业服务商实力推荐

吉林靠谱的开荒保洁专业服务商实力推荐

长春市誉诚物业服务有限公司成立于1999年, 手机:15144183838 深耕本地工装保洁与石材养护领域27年的专业服务商,核心业务覆盖大型场地开荒保洁、石材翻新结晶美缝,服务范围涵盖长春主城区及周边商业、工业、公共建筑场景。公司现…

2026/10/10 2:23:57 阅读更多 →
全链路交换冗余保障方案:从标准定义到故障演练的落地实践

全链路交换冗余保障方案:从标准定义到故障演练的落地实践

干了十几年网络运维和系统集成,有个现象我一直印象很深:很多客户觉得“做了冗余”就等于“有了保障”,可等到真正发生故障的那一天,业务照样中断,兜底方案形同虚设。问题往往不是出在设备上,而是出在方案设…

2026/10/10 2:23:57 阅读更多 →

最新新闻

USMv6特别版:WinPE深度定制与离线系统修复实战指南

USMv6特别版:WinPE深度定制与离线系统修复实战指南

1. 这不是普通PE,而是一套可定制的“系统手术台”很多人第一次看到“U盘魔术师v6特别版(USMv6)”这个名字,下意识会把它归类为“又一个WinPE启动盘制作工具”。我最初也这么想——直到在某次紧急数据恢复现场,用它三分…

2026/10/10 3:53:29 阅读更多 →
Windows老电脑开机慢的精准诊断与优化指南

Windows老电脑开机慢的精准诊断与优化指南

1. 开机慢不是“老化宿命”,而是可定位、可修复的系统状态信号很多人一看到老电脑开机要一分半钟、点开软件要转圈十秒,第一反应就是“这机器不行了,该换新的了”。我接触过太多类似案例:某高校实验室一批2015年采购的台式机&…

2026/10/10 3:53:29 阅读更多 →
Java五子棋对战小游戏从零实现:控制台+Swing+AI完整教程

Java五子棋对战小游戏从零实现:控制台+Swing+AI完整教程

很多学Java的朋友都会卡在一个尴尬的节点:语法看完了,面向对象也懂了,Swing也刷过几个视频,但要真动手做点东西,不知道从哪下手。我这些年带过不少新人,最常推荐的练手项目就是五子棋。它不依赖框架&#x…

2026/10/10 3:53:29 阅读更多 →
PCA9422+MK20DN128低功耗电源管理实战:微安级待机与硬件级状态机设计

PCA9422+MK20DN128低功耗电源管理实战:微安级待机与硬件级状态机设计

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/10 3:53:29 阅读更多 →
MyBatis Plus SQL日志配置实战:从零开始打开与调优

MyBatis Plus SQL日志配置实战:从零开始打开与调优

接手一个老项目,接口慢得离谱,想看看底层 SQL 到底长什么样,结果控制台干干净净,一条日志都没有。翻配置文件,发现 yml 里只写了几句logging.level.root: info,根本没有 MyBatis 相关的配置,于是…

2026/10/10 3:53:29 阅读更多 →
手机评论挖掘:LDA主题建模与情感分析预测销量排序

手机评论挖掘:LDA主题建模与情感分析预测销量排序

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/10 3:52:28 阅读更多 →

日新闻

卫星轨道分类全解析:从LEO到GEO的选型逻辑与工程实践

卫星轨道分类全解析:从LEO到GEO的选型逻辑与工程实践

1. 从“卫星轨道分类”这个标题说起:为什么值得花时间搞懂第一次接触“卫星轨道分类”这个概念,很多人会觉得它离自己很远——不就是天上的星星怎么转吗?但如果你正在做航天任务规划、遥感数据接收、星座设计,甚至只是准备一场航天…

2026/10/10 0:00:39 阅读更多 →
Spring AOP 核心原理与实战:从概念到日志切面落地

Spring AOP 核心原理与实战:从概念到日志切面落地

1. 从一个真实痛点说起:为什么你的代码里到处都是重复逻辑刚入行那会儿,我写过一个用户管理模块,注册、登录、改密码、注销四个接口。每个接口里都塞了几乎一样的日志打印、参数校验、事务开启和提交。当时觉得没什么,能跑就行。直…

2026/10/10 0:00:40 阅读更多 →
Python招聘数据采集与分析可视化:从采集清洗到薪资技能城市可视化全链路

Python招聘数据采集与分析可视化:从采集清洗到薪资技能城市可视化全链路

简介:这是一套面向计算机相关专业学生与项目实战学习者的Python数据采集与分析可视化完整项目,以Boss直聘岗位数据为对象,适合用作毕业设计、课程设计或期末大作业。资源包共38个文件,约246KB,以13个py源码文件为核心&…

2026/10/10 0:00:40 阅读更多 →

周新闻

KT148A语音芯片外挂8002D功放的工程实践指南

KT148A语音芯片外挂8002D功放的工程实践指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/8 15:26:32 阅读更多 →
LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/10 1:36:08 阅读更多 →
ARM架构深度解析:从RISC设计理念到交叉编译实战

ARM架构深度解析:从RISC设计理念到交叉编译实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/9 10:11:06 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/8 21:13:17 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/9 21:32:20 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/9 6:17:20 阅读更多 →