leetcode - 字符串
字符串
466. 统计重复个数
题目
定义
str = [s, n]
表示str
由n
个字符串s
连接构成。
- 例如,
str == ["abc", 3] =="abcabcabc"
。如果可以从
s2
( )中删除某些字符使其变为s1
,则称字符串s1
( )可以从字符串s2
获得。
- 例如,根据定义,
s1 = "abc"
可以从s2 = "ab
dbe
c"
获得,仅需要删除加粗且用斜体标识的字符。现在给你两个字符串
s1
和s2
和两个整数n1
和n2
。由此构造得到两个字符串,其中str1 = [s1, n1]
、str2 = [s2, n2]
。
请你找出一个最大整数m
,以满足str = [str2, m]
可以从str1
获得。示例 1:
输入: s1 = “acb”, n1 = 4, s2 = “ab”, n2 = 2 输出: 2
示例 2:
输入: s1 = “acb”, n1 = 1, s2 = “acb”, n2 = 1 输出: 1提示:
1 <= s1.length, s2.length <= 100
s1
和s2
由小写英文字母组成
1 <= n1, n2 <= 10(6)
题解
/*** @param {string} s1* @param {number} n1* @param {string} s2* @param {number} n2* @return {number}*/
var getMaxRepetitions = function (s1, n1, s2, n2) {let indexMap = new Map();let countS1 = 0,countS2 = 0;let s2p = 0;while (countS1 < n1) {let prev = indexMap.get(s2p);if (!prev) {indexMap.set(s2p, [countS1, countS2]);} else {// 循环节 下一个s1 对应的 s2p 索引有相同时// 循环节循环的次数 向下取整let t = ((n1 - prev[0]) / (countS1 - prev[0])) | 0;countS2 = prev[1] + t * (countS2 - prev[1]);countS1 = prev[0] + t * (countS1 - prev[0]);// 清楚之前的循环记录indexMap.clear();// 整除if (countS1 === n1) break;}// 循环s1for (let i = 0; i < s1.length; i++) {if (s1[i] === s2[s2p]) {s2p++;if (s2p === s2.length) {s2p = 0;countS2++;}}}countS1++;}return (countS2 / n2) | 0;
};
514. 自由之路
题目
电子游戏“辐射4”中,任务 “通向自由” 要求玩家到达名为 “Freedom Trail Ring” 的金属表盘,并使用表盘拼写特定关键词才能开门。
给定一个字符串ring
,表示刻在外环上的编码;给定另一个字符串key
,表示需要拼写的关键词。您需要算出能够拼写关键词中所有字符的最少步数。
最初,ring 的第一个字符与12:00
方向对齐。您需要顺时针或逆时针旋转ring
以使 key 的一个字符在12:00
方向对齐,然后按下中心按钮,以此逐个拼写完key
中的所有字符。
旋转ring
拼出 key 字符key[i]
的阶段中:
您可以将 ring 顺时针或逆时针旋转 一个位置 ,计为1步。旋转的最终目的是将字符串
ring
的一个字符与12:00
方向对齐,并且这个字符必须等于字符key[i]
。如果字符
key[i]
已经对齐到12:00方向,您需要按下中心按钮进行拼写,这也将算作 1 步。按完之后,您可以开始拼写 key 的下一个字符(下一阶段), 直至完成所有拼写。示例 1:
输入: ring = “godding”, key = “gd” 输出: 4 解释: 对于 key 的第一个字符 ‘g’,已经在正确的位置, 我们只需要1步来拼写这个字符。 对于 key 的第二个字符 ‘d’,我们需要逆时针旋转 ring “godding” 2步使它变成 “ddinggo”。 当然, 我们还需要1步进行拼写。 因此最终的输出是 4。
示例 2:
输入: ring = “godding”, key = “godding” 输出: 13提示:
1 <= ring.length, key.length <= 100
ring
和key
只包含小写英文字母保证 字符串
key
一定可以由字符串ring
旋转拼出
题解
/*** @param {string} ring* @param {string} key* @return {number}*/
var findRotateSteps = function (ring, key) {// 外环编码相同字母索引放到同一数组const ringMap = {};for (let i = 0; i < ring.length; i++) {const word = ring[i];if (ringMap[word]) {ringMap[word].push(i);} else {ringMap[word] = [i];}}// 重复计算会超时 由于 1 <= ring.length, key.length <= 100 所以可以搞个备忘录const memo = new Array(ring.length); // 相同编码索引开始,终点索引相同 直接取对应的最小步长function bfs(ringIndex, keyIndex) {if (keyIndex == key.length) return 0;const stepMemo = memo[ringIndex]?.[keyIndex];if (stepMemo) return stepMemo;// 字母对应外编码多个位置的数组const arr = ringMap[key[keyIndex]];let minStep = Infinity;// 找到这个字母不同位置、不同方向旋转最小的步长for (let item of arr) {// 同一个字母 不同方向移动步长const l =ringIndex - item >= 0? ringIndex - item: ringIndex - item + ring.length;const r = ring.length - l;// 不同旋转方向最小步长const min = Math.min(l, r);minStep = Math.min(minStep, min + bfs(item, keyIndex + 1));}memo[ringIndex] = { ...memo[ringIndex], [keyIndex]: minStep };return minStep;}// 按下按钮需要一步,key个字母就是key.lengthreturn key.length + bfs(0, 0);
};
647. 回文子串
题目
给你一个字符串
s
,请你统计并返回这个字符串中 回文子串 的数目。
回文字符串 是正着读和倒过来读一样的字符串。
子字符串 是字符串中的由连续字符组成的一个序列。示例 1:
输入: s = “abc” 输出: 3 解释: 三个回文子串: “a”, “b”, “c”
示例 2:
输入: s = “aaa” 输出: 6 解释: 6个回文子串: “a”, “a”, “a”, “aa”, “aa”, “aaa”提示:
1 <= s.length <= 1000
s
由小写英文字母组成
题解
/*** @param {string} s* @return {number}*/
var countSubstrings = function(s) {const n=s.length;let myNumber=0;for(var i=0;i<2*n-1;i++){//2n-1个回文中心let l=i/2;let r=i/2+(i%2);while(l>=0&&r<n&&s.charAt(l)===s.charAt(r)){//charAt(1.5)===charAt(1)l--r++myNumber++}}return myNumber};
709. 转换成小写字母
题目
给你一个字符串
s
,将该字符串中的大写字母转换成相同的小写字母,返回新的字符串。示例 1:
输入: s = “Hello” 输出: “hello”
示例 2:
输入: s = “here” 输出: “here”
示例 3:
输入: s = “LOVELY” 输出: “lovely”提示:
1 <= s.length <= 100
s
由 ASCII 字符集中的可打印字符组成
题解
/*** @param {string} str* @return {string}*/
var toLowerCase = function (str) {let startA = 65;//大写字母A到Z,对应的 ASCII 码值范围是65到90。let endZ = 90;// let starta=97;//小写字母a到z,对应的 ASCII 码值范围是97到122。// let endz=122;let res = "";for (var i = 0; i < str.length; i++) {let charcode = str.charCodeAt(i);if (charcode >= startA && charcode <= endZ) {res += String.fromCharCode(charcode + 32);} else {res += str.charAt(i);}}return res;
};
3305. 元音辅音字符串计数 I
题目
给你一个字符串
word
和一个 非负 整数k
。
返回word
的 子字符串 中,每个元音字母('a'
、'e'
、'i'
、'o'
、'u'
)至少 出现一次,并且 恰好 包含k
个辅音字母的子字符串的总数。示例 1:
输入: word = “aeioqq”, k = 1
输出: 0
解释:
不存在包含所有元音字母的子字符串。
示例 2:
输入: word = “aeiou”, k = 0
输出: 1
解释:
唯一一个包含所有元音字母且不含辅音字母的子字符串是word[0..4]
,即"aeiou"
。
示例 3:
输入: word = “ieaouqqieaouqq”, k = 1
输出: 3
解释:
包含所有元音字母并且恰好含有一个辅音字母的子字符串有:
word[0..5]
,即"ieaouq"
。
word[6..11]
,即"qieaou"
。
word[7..12]
,即"ieaouq"
。提示:
5 <= word.length <= 250
word
仅由小写英文字母组成。
0 <= k <= word.length - 5
题解
var countOfSubstrings = function (word, k) {let sum = 0;let start = 0;let end = start + 5 + k;while (start < word.length - 4 - k) {const itemStr = word.substring(start, end);const vowelWordMap = {a: 0,e: 0,i: 0,o: 0,u: 0,};for (let j = 0; j < itemStr.length; j++) {if (!isNaN(vowelWordMap[itemStr[j]])) vowelWordMap[itemStr[j]] += 1;}let vowelWordSum = 0;let isTrueStr = true;for (let key in vowelWordMap) {vowelWordSum += vowelWordMap[key];if (vowelWordMap[key] < 1) {isTrueStr = false;break;}}if (isTrueStr && end - start - vowelWordSum === k) {sum++;}end++;if (end > word.length) {start++;end = start + 5 + k;}}return sum;
};
LCR 018. 验证回文串
题目
给定一个字符串
s
,验证s
是否是 回文串 ,只考虑字母和数字字符,可以忽略字母的大小写。
本题中,将空字符串定义为有效的 回文串 。示例 1:
输入: s = “A man, a plan, a canal: Panama” 输出: true 解释: “amanaplanacanalpanama” 是回文串
示例 2:
输入: s = “race a car” 输出: false 解释: “raceacar” 不是回文串提示:
1 <= s.length <= 2 * 10(5)
字符串
s
由 ASCII 字符组成
题解
/*** @param {string} s* @return {boolean}*/
var isPalindrome = function (s) {if (!s) {return false;}let startIndex = 0;let endIndex = s.length - 1;while (startIndex < endIndex) {const startItem = s[startIndex].toLocaleLowerCase();const endItem = s[endIndex].toLocaleLowerCase();const isStartMatching = /\d|[a-z]/g.test(startItem);if (!isStartMatching) {startIndex++;continue;}const isEndMatching = /\d|[a-z]/g.test(endItem);if (!isEndMatching) {endIndex--;continue;}if (startItem === endItem) {startIndex++;endIndex--;continue;} else {return false;}}return true;
};
相关文章:

leetcode - 字符串
字符串 466. 统计重复个数 题目 定义 str [s, n] 表示 str 由 n 个字符串 s 连接构成。 例如,str ["abc", 3] "abcabcabc" 。 如果可以从 s2( )中删除某些字符使其变为 s1,则称字符串 s1( )可以从字符串 s2 获得。 例如…...

【基础IO上】复习C语言文件接口 | 学习系统文件接口 | 认识文件描述符 | Linux系统下,一切皆文件 | 重定向原理
1.关于文件的预备知识 1.1 文件的宏观理解 广义上理解,键盘、显示器等都是文件,因为我们说过“Linux下,一切皆文件”,当然我们现在对于这句话的理解是片面的;狭义上理解,文件在磁盘上,磁盘是一…...

Freertos--统计所有任务栈信息以及CPU占比和钩子函数
一、概念 在 FreeRTOS 中统计任务栈信息和 CPU 占比是为了分析栈使用情况防止溢出、优化性能识别高负载任务、合理分配资源避免内存浪费、调试系统排查阻塞或优先级问题,有助于提升效率、确保稳定性、快速定位问题并防止崩溃,比如在你的蜂鸣器任务中可以…...

京东商品详情API接口调用技术指南
本文基于京东宙斯开放平台(JD Open API)的 jingdong.ware.product.detail.search.get 接口,提供商品详情数据获取的完整技术方案,包含参数说明、代码实现及实战避坑指南。 一、接口功能与权限 核心能力 获取商品SKU的完整信…...

基于Java(JSP)+MySQL实现深度学习的音乐推荐系统
基于深度学习的音乐推荐系统简述 本文简要介绍我做的基于深度学习的音乐推荐系统。主要从需求分析与设计实现的角度来进行介绍。 需求分析 基于深度学习的音乐推荐系统旨在以个性化音乐推荐模型为基础,使用B/S架构的形式实现。个性化推荐模型使用了 随机梯度下降…...

Linux:进程间通信---匿名管道
文章目录 1. 进程间通信1.1 什么是进程间通信?1.2 为什么进程要进行进程间通信?1.3 怎么实现进程间通信? 2. 匿名管道2.1 匿名管道的原理2.2 匿名管道的系统接口2.3 匿名管道的使用2.4 匿名管道的运用场景 序:在上一篇文章中我们知…...
C++ 类及函数原型详解
一、引言 在C 编程中,类(Class)是面向对象编程的核心概念之一,它是一种用户自定义的数据类型,封装了数据和操作数据的函数(成员函数)。函数原型则为函数的声明提供了必要的信息,让编…...

深度学习小记(包括pytorch 还有一些神经网络架构)
这个是用来增加深度学习的知识面或者就是记录一些常用的命令,会不断的更新 import torchvision.transforms as transforms toPIL transforms.ToPILImage()#可以把tensor转换为Image类型的 imgtoPIL(img) #利用save就可以保存下来 img.save("/opt/data/private/stable_si…...
声音分离人声和配乐base,vocals,drums -从头设计数字生命第6课, demucs——仙盟创梦IDE
demucs -n htdemucs --two-stemsvocals 未来之窗.mp3 demucs -n htdemucs --shifts5 之.mp3demucs -n htdemucs --shifts5 -o wlzcoutspl 未来之窗.mp3 伴奏提取人声分离技术具有多方面的重大意义,主要体现在以下几个领域: 音乐创作与制作 创作便利…...
深度探索多模态数据:从声音到图像的奇妙世界
深度探索多模态数据:从声音到图像的奇妙世界 在多模态深度学习的旅程中,我们不仅要了解不同数据形式的融合策略,还需要熟悉各种数据类型的特性。今天,我们将探索两种常见但极具价值的模态:音频数据和医学CT扫描。 音…...

【数据可视化-32】全球住房市场分析(2015-2024 年)数据集可视化分析
🧑 博主简介:曾任某智慧城市类企业算法总监,目前在美国市场的物流公司从事高级算法工程师一职,深耕人工智能领域,精通python数据挖掘、可视化、机器学习等,发表过AI相关的专利并多次在AI类比赛中获奖。CSDN…...
JAVA---面向对象(下)
重生之我开始补知识第三集 1.标准 JavaBean 要求: 1)类名需要见名知意 2)成员变量使用private修饰 3)至少提供两个构造方法 a.无参构造方法 b.带全部参数的构造方法 4)成员方法 a.提供每一个成员变量对应的 …...
FPGA(现场可编程门阵列)笔记
*编程语言 - [Verilog]:硬件描述语言,语法风格类似于C语言,用于数字电路的设计。 - [SystemVerilog]:扩展自Verilog,增加了面向对象编程等特性,语法更接近于C,适用于复杂系统设计。 - [VHDL]:另一种硬件描述语言&…...

DAX Studio将PowerBI与EXCEL连接
DAX Studio将PowerBI与EXCEL连接 具体步骤如下: 第一步:先打开一个PowerBI的文件,在外部工具栏里打开DAXStudio,如图: 第二步:DAXStudio界面,点击Advanced选项卡-->Analyze in Excel&#…...

使用spring boot vue 上传mp4转码为dash并播放
1.前端实现 <template><div class"video-upload"><el-uploadclass"upload-demo"action"/api/upload":before-upload"beforeUpload":on-success"handleSuccess":on-error"handleError":show-file-…...

深入理解指针 (1)
1.内存和地址 1.1内存 1.1.1内存的使用和管理 (1)内存划分为一个个的内存单元,每个内存单元的大小是1个字节,一个内存单元可以存放8个bit。 (2)每个内存单元有一个编号,内存单元的编号在计…...

Leetcode98、230:二叉搜索树——递归学习
什么是二叉搜索树:右子树节点 > 根节点 > 左子树节点, 二叉搜索树中的搜索,返回给定值val所在的树节点 终止条件为传进来的节点为空、或者节点的值 val值,返回这个节点; 单程递归逻辑:定义一个resu…...
4/25 研0学习日志
Python学习 python 4个常用的数据容器 list dict tuple set list 列表中数据类型可以不一样 构造方式 mylist["xxx","xxxx"] 获取数据方式 mylist[1] mylist[:4] mylist[-1:] 添加数据 mylist.append() mylist.extern(["aaa","aaaa&…...

15. LangChain多模态应用开发:融合文本、图像与语音
引言:当AI学会"看听说想" 2025年某智慧医院的多模态问诊系统,通过同时分析患者CT影像、语音描述和电子病历,将误诊率降低42%。本文将基于LangChain多模态框架与Deepseek-R1,手把手构建能理解复合信息的智能系统。 一、…...

2022李宏毅老师机器学习课程笔记
机器学习笔记目录 1.绪论(内容概述)2.机器学习和深度学习的基本概念transformer 1.绪论(内容概述) 机器学习:让机器找一个函数,通过函数输出想要的结果。应用举例:语音识别,图像识别…...

笔试强训:Day2
一、字符串中找出连续最长的数字串(双指针) 字符串中找出连续最长的数字串_牛客题霸_牛客网 #include <iostream> #include <string> #include <cctype> using namespace std;int main() {//双指针string str;cin>>str;int nstr.size();int begin-1,l…...

linux合并命令(一行执行多个命令)的几种方式总结
背景: 最近安装配置机器,需要手打很多命令。又不能使用docker,所以就使用iTerm2连接多台服务器,然后move session到一个窗口中,shift command i使用XSHELL类似的撰写功能,就可以一次在多台服务器命令窗口…...

基于归纳共形预测的大型视觉-语言模型中预测集的**数据驱动校准**
摘要 本研究通过分离共形预测(SCP)框架,解决了大型视觉语言模型(LVLMs)在视觉问答(VQA)任务中幻觉缓解的关键挑战。虽然LVLMs在多模态推理方面表现出色,但它们的输出常常表现出具有…...
【器件专题1——IGBT第2讲】IGBT 基本工作原理:从结构到特性,一文解析 “电力电子心脏” 的核心机制
IGBT(绝缘栅双极型晶体管,Insulated Gate Bipolar Transistor)作为现代电力电子领域的核心器件,其工作原理融合了 MOSFET 的高效控制优势与 BJT 的大功率处理能力。本文从物理结构、导通 / 关断机制、核心特性等维度,深…...
【避坑指南】Spring拦截器中instanceof HandlerMethod失效的问题排查
问题背景 最近在使用Spring MVC开发项目时,我遇到了一个诡异的问题:在自定义拦截器的preHandle方法中,明明请求的是Controller层的方法,但handler instanceof HandlerMethod判断却总是返回false,导致拦截逻辑无法正常…...
青少年编程与数学 02-018 C++数据结构与算法 06课题、树
青少年编程与数学 02-018 C数据结构与算法 06课题、树 一、树(Tree)1. 树的定义2. 树的基本术语3. 常见的树类型4. 树的主要操作5. 树的应用 二、二叉树(Binary Tree)1. 二叉树的定义2. 二叉树的基本术语3. 二叉树的常见类型4. 二叉树的主要操作5. 二叉树的实现代码说明输出示例…...

docker学习笔记5-docker中启动Mysql的最佳实践
一、查找目录文件位置 1、mysql的配置文件路径 /etc/mysql/conf.d 2、mysql的数据目录 /var/lib/mysql 3、环境变量 4、端口 mysql的默认端口3306。 二、启动命令 1、启动命令说明 docker run -d -p 3306:3306 -v /app/myconf:/etc/mysql/conf.d # 挂载配置目录 -v…...

从零开始搭建Django博客③--前端界面实现
本文主要在Ubuntu环境上搭建,为便于研究理解,采用SSH连接在虚拟机里的ubuntu-24.04.2-desktop系统搭建,当涉及一些文件操作部分便于通过桌面化进行理解,通过Nginx代理绑定域名,对外发布。 此为从零开始搭建Django博客…...

系统与网络安全------弹性交换网络(3)
资料整理于网络资料、书本资料、AI,仅供个人学习参考。 STP协议 环路的危害 单点故障 PC之间的互通链路仅仅存在1个 任何一条链路出现问题,PC之间都会无法通信 解决办法 提高网络可靠性 增加冗余/备份链路 增加备份链路后交换网络上产生二层环路 …...

Cursor 配置 MCP Tool
文章目录 1、MCP Tool 的集合2、一个 demo :Sequential Thinking2.1、搜索一个 MCP Tool 获取 command 命令2.2、在 Cursor 配置2.3、配置状态检查与修正(解决网络问题)检查解决办法 2.4、使用 1、MCP Tool 的集合 https://smithery.ai/ 2、一个 demo :Sequential Thinking …...