剑指Offer|LCR 014. 字符串的排列
LCR 014. 字符串的排列
给定两个字符串 s1 和 s2,写一个函数来判断 s2 是否包含 s1 的某个变位词。
换句话说,第一个字符串的排列之一是第二个字符串的 子串 。
示例 1:
输入: s1 = "ab" s2 = "eidbaooo"
输出: True
解释: s2 包含 s1 的排列之一 ("ba").
示例 2:
输入: s1= "ab" s2 = "eidboaoo"
输出: False
提示:
1 <= s1.length, s2.length <= 104s1和s2仅包含小写字母
法1:滑动窗口
分析:
建立一个hash表,键是26个字母,对应值是各自出现的次数,为方便键0就代表a,1代表b这样。
看例子:s1 = "ab" s2 = "eidbaooo"

表格中没写的都是填充0。接着遍历后面的s2

i=2,遍历s2中的d,
counts[s2.charCodeAt(i) - ‘a’.charCodeAt(0)]–=counts[d-a]–=counts[3]–
counts[s2.charCodeAt(i - s1.length) - ‘a’.charCodeAt(0)]++=counts[e-a]++=counts[4]++
i=3,遍历s2中的b
counts[s2.charCodeAt(i) - ‘a’.charCodeAt(0)]–=counts[b-a]–=counts[1]–
counts[s2.charCodeAt(i - s1.length) - ‘a’.charCodeAt(0)]++=counts[i-a]++=counts[8]++
i=4,遍历s2中的a
counts[s2.charCodeAt(i) - ‘a’.charCodeAt(0)]–=counts[a-a]–=counts[0]–
counts[s2.charCodeAt(i - s1.length) - ‘a’.charCodeAt(0)]++=counts[d-a]++=counts[3]++
到这,counts全都为0,就返回true
var checkInclusion = function(s1, s2) {if (s2.length < s1.length) return false;let counts = new Array(26).fill(0);// 初始填充 counts 数组for (let i = 0; i < s1.length; ++i) {counts[s1.charCodeAt(i) - 'a'.charCodeAt(0)]++; // s1 计数 ++counts[s2.charCodeAt(i) - 'a'.charCodeAt(0)]--; // s2 计数 --}// 检查是否已匹配if (areAllZero(counts)) {return true;}// 滑动窗口// 滑动窗口的大小始终为 s1.length。for (let i = s1.length; i < s2.length; ++i) {counts[s2.charCodeAt(i) - 'a'.charCodeAt(0)]--;counts[s2.charCodeAt(i - s1.length) - 'a'.charCodeAt(0)]++;if (areAllZero(counts)) {return true;}}
};/*** 辅助函数:检查 counts 数组是否全部为零* @param {number[]} counts* @return {boolean}*/
function areAllZero(counts) {for (let count of counts) {if (count !== 0) {return false;}}return true;
}
相关文章:
剑指Offer|LCR 014. 字符串的排列
LCR 014. 字符串的排列 给定两个字符串 s1 和 s2,写一个函数来判断 s2 是否包含 s1 的某个变位词。 换句话说,第一个字符串的排列之一是第二个字符串的 子串 。 示例 1: 输入: s1 "ab" s2 "eidbaooo" 输出: True 解…...
【Agent】Chatbot、Copilot与Agent如何帮助我们的提升效率?
人工智能(AI)技术的迅猛发展正在深刻改变我们的生活和工作方式。你是否曾想过,未来的工作场景会是什么样子?AI的崛起不仅仅是科技的进步,更是我们生活方式的革命。今天,我们将深入探讨三种主要的AI能力&…...
QT笔记- QTreeView + QFileSystemModel 当前位置的保存与恢复 #选中 #保存当前索引
保存当前位置 QString currentPath model->filePath(view->currentIndex()); // 获得当前位置路径 恢复位置 view->setCurrentIndex(model->index(currentPath)); // 设置此路径所在位置为当前位置...
OpenResty开发环境搭建
简介 OpenResty 是一个基于 Nginx的高性能 Web 平台,用于方便地搭建能够处理超高并发、扩展性极高的动态 Web 应用、Web 服务和动态网关。官方地址:http://openresty.org/cn/ 具备下列特点: 具备Nginx的完整功能基于Lua语言进行扩展&#…...
linux提示结构需要清理
1. df -hT 查看出问题的文件夹所在的挂载磁盘及文件格式 2. umount 挂载磁盘,如果提示在忙, lsof 目录查看正在使用的进程,将其kill掉 3. 修复磁盘 根据文件格式修复磁盘fsck.ext4 /dev/sda1 或者 xfs_repair /dev/sda1 4. 重启系统 “结构需要清理…...
【扩展卡尔曼滤波理论推导与实践】【理论】【2/3 公式推导】
目录 非线性系统泰勒展开卡尔曼滤波卡尔曼增益模型误差协方差矩阵 公式总结 本节默认你能够完整推导标准卡尔曼滤波,将会简化一些推导的描述。如果你还不会完整推导标准卡尔曼滤波,请先从 【卡尔曼滤波理论推导与实践】系列开始看起。 非线性系统 扩展…...
springboot494基于java的综合小区管理系统(论文+源码)_kaic
摘 要 如今社会上各行各业,都喜欢用自己行业的专属软件工作,互联网发展到这个时候,人们已经发现离不开了互联网。新技术的产生,往往能解决一些老技术的弊端问题。因为传统综合小区管理系统信息管理难度大,容错率低&am…...
深度学习blog-Transformer-注意力机制和编码器解码器
注意力机制:当我们看一个图像或者听一段音频时,会根据自己的需求,集中注意力在关键元素上,以获取相关信息。 同样地,注意力机制中的模型也会根据输入的不同部分,给它们不同的权重,并集中注意力在…...
敏感词 v0.24.0 新特性支持标签分类,内置实现多种策略
开源项目 敏感词核心 https://github.com/houbb/sensitive-word 敏感词控台 https://github.com/houbb/sensitive-word-admin 版本特性 大家好,我是老马。 敏感词标签分类一直是大家比较想要的一个功能特性,v0.24.0 了开始内置支持标签分类,…...
随身 WiFi 连接 X-Wrt 共享网络与 IPv6 中继配置
本文首发于只抄博客,欢迎点击原文链接了解更多内容。 前言 之前分享的《随身 WiFi 通过 USB 连接路由器共享网络 扩展网络覆盖范围》介绍了随身 WiFi 通过 USB 连接到路由器共享网络,其中留下两个小问题没有解决: OpenWrt 无法识别中兴微的…...
Keil-编译按钮Translate,Build,Rebuild
在Keil编程环境中,有三个编译源文件相关的按钮Translate,Build,Rebuild: Translate 仅仅(狭义)编译一下当前编辑的源文件(main.c 仅生成 main.o),并不生成最终可执行文件…...
No.1免费开源ERP:Odoo自定义字段添加到配置页中的技术分享
文 / 开源智造(OSCG) Odoo亚太金牌服务 在Odoo18之中,配置设定于管控各类系统配置层面发挥着关键之效用,使您能够对软件予以定制,以契合您特定的业务需求。尽管 Odoo 提供了一组强劲的默认配置选项,然而有…...
Linux 更改Jenkins使用其他账户启动
Linux 更改Jenkins使用其他账户启动 步骤一:修改 Jenkins 配置文件1. 编辑 Jenkins 的 systemd 服务文件:2. 在编辑器中添加以下内容:3. 保存并退出编辑器 步骤二:更改 Jenkins 目录的权限步骤三:重新加载 systemd 配置…...
wordpres当前分类调用父分类的名称和链接
在WordPress中,如果你想在当前分类页面调用并显示父分类的名称和链接,你可以使用以下代码片段: <?php // 获取当前分类的ID $cat_id get_queried_object_id();// 获取当前分类的父分类ID $parent_id get_term($cat_id, category)->…...
TCP客户端模拟链接websocket服务端发送消息(二)
兄弟们,我来填坑了,o(╥﹏╥)o o(╥﹏╥)o o(╥﹏╥)o o(╥﹏╥)o o(╥﹏╥)o o(╥﹏╥)o,前几天写了个tcp模拟websocket客户端的以为完成,后面需要发送消息给服务端,以为简单不就是一个发送消息么,这不是一…...
操作系统之同步与互斥的基本概念
1. 同步的基本概念 定义:同步是指在多个并发执行的进程或线程之间协调其行为,以使它们能够正确地相互合作。在计算机科学中,同步通常指对共享资源进行访问控制,以避免竞争条件和死锁等问题。 实现方式:为了实现同步&a…...
详细讲解axios封装与api接口封装管理
一、axios封装 axios是基于promise的http客户端,用于浏览器和nodejs发送http请求 ,对它进行封装主要是为了统一管理请求配置和处理请求和响应的通用逻辑等。以下是常用的封装逻辑和要点 1:引入axios相关依赖 首先引用项目中的axios库&…...
API 接口如何确保数据的安全?
在API接口的对接中,确保数据的安全性是至关重要的。以下是一些关键措施,可以帮助实现这一目标: 一、认证与授权 API密钥:为每个调用方分配唯一的API密钥,客户端在请求时携带该密钥,服务器端验证其有效性。…...
HAL库STM32硬件IIC驱动数字电位器MCP4017
目录 一、芯片特性 二、硬件电路 三、工程搭建 四、IIC硬件地址 五、驱动程序 项目需要,最近用到了一个IIC接口的数字电位器,型号:MCP4017T-502E。对应阻值5K,使用STM32G030F6的硬件IIC驱动,发现简单的不得了&…...
「地平线」副总裁余轶南与「理想汽车」智驾产品总监赵哲伦联手创业,入局具身智能赛道!
小编早期文章:智驾领域从业者,疯狂涌入人形机器人赛道!就有提到智驾领域从业者入局人形机器人赛道是趋势并分析原因。 之前媒体报道的智驾芯片上市公司【地平线】创始成员、副总裁、前软件平台产品线总裁余轶南(博士)…...
希望中国出现越来越多的张雪!!!——他很单纯,他说,人生很短,掐头去尾,就是20-30年,为何不做一些有意义的事情呢?
重庆张雪机车工业有限公司(Chongqing Zhangxue Machinery Industry Co., Ltd.),简称:张雪机车,由成立于2024年4月2日,总部位于重庆市两江新区 [1],由张雪创立 [5],是一家主营集摩托车整车生产制造和销售服务的有限责任公司。法定代表人张雪。 [1] 2024年7月,张雪机车…...
抗体研发核心工具测评:酵母 / 噬菌体文库与展示技术
一、技术定位:生物治疗抗体研发的基石工具单克隆抗体(mAbs)及其衍生物是生物治疗领域的核心支柱,尤其在肿瘤、自身免疫病等疾病治疗中占据不可替代的地位。抗体研发的起始阶段 —— 抗原特异性抗体筛选,直接决定治疗性…...
国风美学生成模型v1.0创意延展:将生成结果导入Visio进行二次设计与标注
国风美学生成模型v1.0创意延展:将生成结果导入Visio进行二次设计与标注 最近在玩一个挺有意思的国风美学生成模型,用它捣鼓出了不少有韵味的画作。但光生成出来看看,总觉得有点可惜。这些充满东方美感的底图,如果能和专业的设计工…...
适配器模式设计思路
01.适配器模式基础适配器模式是一种结构型设计模式,用于将不兼容的接口转换为可兼容的接口,使原本不能一起工作的类可以协同工作。本文详细介绍了适配器模式的基础、实现方式(类适配器和对象适配器)、应用场景(如封装有…...
STM32+OneNET 智能家居项目踩坑全记录:数据不显示、更新慢、步长校验全解析
一、OneNET 数据更新极慢,2 分钟才刷新一次 问题现象 代码里设置的是timeCount>200(约 5 秒)发送一次数据,结果 OneNET 平台要 2 分钟才更新一次,完全不实时。 根因分析 主循环耗时严重!原本以为 5 …...
用LBM格子玻尔兹曼方法在Matlab中模拟3D气泡上升多相流
lbm格子玻尔兹曼方法模拟3D气泡上升多相流 matlab在计算流体力学领域,模拟多相流现象一直是个热门且具有挑战性的话题。今天咱们就来唠唠用格子玻尔兹曼方法(Lattice Boltzmann Method, LBM)在Matlab里模拟3D气泡上升多相流。 LBM方法简介 格…...
Qwen3.5-2B在WSL2中的开发环境配置指南
Qwen3.5-2B在WSL2中的开发环境配置指南 1. 为什么选择WSL2进行AI开发 对于习惯Windows系统但又需要Linux环境的开发者来说,WSL2提供了一个近乎完美的解决方案。它能在Windows系统上运行完整的Linux内核,性能接近原生Linux,同时又能与Window…...
知识图谱在电商推荐系统中的5个落地场景:从商品关系到用户画像的实践指南
知识图谱在电商推荐系统中的5个落地场景:从商品关系到用户画像的实践指南 当你在电商平台搜索"蓝牙耳机"时,系统不仅会推荐同类商品,还可能智能搭配运动臂包或防水手机壳——这背后正是知识图谱在重新定义推荐逻辑。不同于传统协同…...
基于SpringBoot + Vue的定制化设计服务平台
文章目录前言一、详细操作演示视频二、具体实现截图三、技术栈1.前端-Vue.js2.后端-SpringBoot3.数据库-MySQL4.系统架构-B/S四、系统测试1.系统测试概述2.系统功能测试3.系统测试结论五、项目代码参考六、数据库代码参考七、项目论文示例结语前言 💛博主介绍&#…...
FPGA与主机高速通信:基于Xilinx 7系列PCIe和XDMA IP的实战数据吞吐测试与优化
FPGA与主机高速通信:基于Xilinx 7系列PCIe和XDMA IP的实战数据吞吐测试与优化 在硬件加速和实时数据处理领域,FPGA与主机之间的高速数据传输能力往往是系统性能的瓶颈所在。当我们在Xilinx 7系列FPGA上实现基于PCIe Gen2/3和XDMA IP核的设计后࿰…...
