2026-06-23:合并靠近字符。用go语言,现有仅含小写字母的字符串s与整数k,规则说明如下: 1. 判定标准:同一字符串里,若两个相同字母的位置索引差值不超过k,这两个字符视作相邻靠近字符。 2
2026-06-23合并靠近字符。用go语言现有仅含小写字母的字符串s与整数k规则说明如下判定标准同一字符串里若两个相同字母的位置索引差值不超过k这两个字符视作相邻靠近字符。合并规则满足靠近条件的一对字符右边字符直接并入左边字符的位置合并操作一轮只能处理一组每完成一次合并就生成新字符串循环执行直到不存在可合并字符。合并优先级每次操作只选一组合并① 优先挑选左侧索引数字最小的那一组可合并字符② 若多组字符左侧索引相同再从中选右侧索引数字最小的一组执行合并。输出要求输出全部合并结束后得到的最终字符串。1 s.length 100。1 k s.length。s 由小写英文字母组成。输入 s “yybyzybz”, k 2。输出 “ybzybz”。解释下标 i 0 和 i 1 处的字符 ‘y’ 是靠近的因为 1 - 0 1 k。将它们合并到左侧的 ‘y’得到 s “ybyzybz”。现在下标 i 0 和 i 2 处的字符 ‘y’ 是靠近的因为 2 - 0 2 k。将它们合并到左侧的 ‘y’得到 s “ybzybz”。没有其他相同的字符是靠近的因此不再发生合并。题目来自力扣3853。好的我们先按照题目规则和提供的代码一步步分析这个合并过程的逻辑并对比题目描述来验证。大体过程详细分解第一步理解合并规则相同字符如果在当前字符串中的位置索引差 ≤k就认为它们“靠近”。每次只选一组进行合并优先选左侧索引最小的那一组如果左侧索引相同则选右侧索引最小的那一组。合并的方式是右侧字符删除左侧字符保留相当于右侧合并到左侧。注意合并后字符串长度减 1后续位置索引会重新计算。第二步代码实现思路分析非代码只说明逻辑提供的mergeCharacters函数做的是一次遍历过滤重复字符不是模拟题目描述的“循环合并”。它的核心逻辑是用一个last[26]数组记录每个字母最近一次被保留在结果中的位置。遍历原字符串的每一个字符如果当前字符距离它上一次保留的位置 k就保留它并更新last否则就跳过合并掉。这个逻辑相当于从左到右扫描只保留那些和前一个同类字符距离超过 k的字符。这实际上执行的是“消除所有靠近字符中的右边那个”但由于是一次从左到右的贪心它的结果等价于每次都合并最左侧可合并对中的右侧字符反复进行直到没有靠近字符。第三步对照示例模拟整个过程初始字符串yybyzybzk2索引从 0 开始初始状态索引0: y索引1: y → 与索引0距离1 ≤ 2符合靠近 → 合并右侧索引1保留索引0得到新串ybyzybz删除了原索引1的 y当前串ybyzybz索引0: y1: b2: y3: z4: y5: b6: z现在找最近的可合并对看字符 y索引0 和索引2距离2 ≤ 2 → 可合并右侧为索引2字符 y 还有索引2 和索引4距离2 ≤ 2 → 也可合并但是左侧索引2 0所以优先选左侧索引最小的 (0,2)合并 (0,2)删除索引2的 y得到新串ybzybz当前串ybzybz索引0: y1: b2: z3: y4: b5: z检查所有相同字符对y: 索引0 和索引3距离3 2不靠近其他字符不重复或距离 k因此没有可合并字符结束。最终结果ybzybz与题目输出一致。第四步代码逻辑与实际合并过程的关系代码一次遍历做的其实是上述步骤的压缩版本它保留每个字符第一次出现后只有距离超过 k 的下一个同类字符才会被保留中间的都会被丢弃。这正好等价于反复合并最左可合并对因为每次合并后右侧字符消失左侧字符仍在原位置后续字符左移但代码的“距离k才保留”规则恰恰模拟了这种“删除右侧靠近字符”的操作。复杂度分析时间复杂度遍历一次字符串每个字符只处理一次每次操作是 O(1)数组索引和比较。设 n s.length时间复杂度为O(n)。额外空间复杂度使用了一个长度为 26 的数组记录最后出现位置以及一个字节切片存储结果长度最多 n。因此额外空间是 O(1)常数大小加上结果存储空间输出必须的不计入额外空间时只算辅助空间则为 O(1)。最终答案时间复杂度O(n)额外空间复杂度O(1)不包括输出字符串本身Go完整代码如下packagemainimport(fmt)funcmergeCharacters(sstring,kint)string{last:[26]int{}fori:rangelast{last[i]-k-1// 保证首次遇到字母 i 时len(ans)-last[i] k 是 true}ans:[]byte{}for_,ch:ranges{// ch 在 ans 中的下标是 len(ans)iflen(ans)-last[ch-a]k{last[ch-a]len(ans)ansappend(ans,byte(ch))}}returnstring(ans)}funcmain(){s:yybyzybzk:2result:mergeCharacters(s,k)fmt.Println(result)}Python完整代码如下# -*-coding:utf-8-*-defmerge_characters(s:str,k:int)-str:# 初始化 last 数组每个字母的上次出现位置初始值设为 -k-1last[-k-1]*26ans[]forchins:idxord(ch)-ord(a)# 如果当前字符与上次出现位置的距离大于 k则保留iflen(ans)-last[idx]k:last[idx]len(ans)ans.append(ch)return.join(ans)if__name____main__:syybyzybzk2resultmerge_characters(s,k)print(result)C完整代码如下#includeiostream#includestring#includevectorstd::stringmergeCharacters(conststd::strings,intk){// 初始化 last 数组每个字母的上次出现位置初始值设为 -k-1std::vectorintlast(26,-k-1);std::string ans;for(charch:s){intidxch-a;// 如果当前字符与上次出现位置的距离大于 k则保留if(static_castint(ans.size())-last[idx]k){last[idx]static_castint(ans.size());// 记录加入前的索引即新字符的下标ans.push_back(ch);}}returnans;}intmain(){std::string syybyzybz;intk2;std::string resultmergeCharacters(s,k);std::coutresultstd::endl;return0;}

相关新闻

工作3年才敢说真话:90%的Java微服务项目,根本没必要用SpringCloud

工作3年才敢说真话:90%的Java微服务项目,根本没必要用SpringCloud

前言:被过度神化的SpringCloud微服务 从事Java后端开发3年,参与过6个从0到1的企业级项目迭代,见过无数团队的技术选型闹剧:不管项目体量、不管业务复杂度、不管团队规模、不管流量高低,新项目一律无脑上SpringCloud微服务。 在校招培训、技术博主、企业八股文的集体渲染…

2026/6/24 12:35:24阅读更多 →
【Ai运维】Redis008篇

【Ai运维】Redis008篇

文章目录 Redis 主从复制 + 哨兵高可用 + Cluster 集群企业级完整指南 一、Redis 高可用架构体系总览 1.1 架构演进路线 1.2 企业级选型建议 二、Redis 主从复制深度详解 2.1 核心概念与价值 2.2 复制原理全流程(零基础易懂版) 阶段1:建立连接与握手 阶段2:全量同步(首次连…

2026/6/24 12:35:24阅读更多 →
PyTorch 迁移实录,自定义算子适配全过程

PyTorch 迁移实录,自定义算子适配全过程

从 CUDA 到 ROCm:百亿模型迁移中的算子适配实录 最近接手了一个将百亿参数大模型从 NVIDIA 平台迁移至 AMD Instinct GPU 的任务。起初以为只是换个设备字符串那么简单,毕竟 PyTorch 对 ROCm 的支持已经相当成熟。但在实际跑通流程时,还是撞上…

2026/6/24 12:30:22阅读更多 →
Mac终端调用Claude等大模型:OpenClaw安装与排障实战指南

Mac终端调用Claude等大模型:OpenClaw安装与排障实战指南

1. 先说清楚:OpenClaw 不是官方产品,也不是 Claude 的 macOS 客户端 “mac安装openclaw”这个搜索词背后,藏着一个非常典型的认知偏差——很多人把它当成和 Claude Code 、 Codex 或某个“Mac版Claude桌面应用”一样,是 Anthr…

2026/6/24 19:18:28阅读更多 →
janus-pro本地大模型推理服务部署实战

janus-pro本地大模型推理服务部署实战

1. 项目概述:这不是“装个软件”,而是一次完整的本地大模型运行环境重建“如何在本地部署自己的大模型(四)”——这个标题里藏着三个关键信号:第一,“本地”意味着完全脱离云端依赖,所有计算、推…

2026/6/24 19:18:28阅读更多 →
基于MATLAB构建交互式数字天象馆:从坐标转换到3D可视化

基于MATLAB构建交互式数字天象馆:从坐标转换到3D可视化

1. 项目概述:从零构建一个交互式MATLAB数字天象馆“天上那是什么?” 这个问题几乎每个人都问过。无论是夜空中一颗特别亮的星,还是一道快速划过的轨迹,那份对宇宙的好奇心是共通的。作为一名长期与数据和算法打交道的工程师&#…

2026/6/24 19:18:28阅读更多 →
OpenClaw China钉钉告警插件原理与国产化落地实践

OpenClaw China钉钉告警插件原理与国产化落地实践

1. OpenClaw插件“dingding”不是钉钉客户端,而是国产化环境下的告警通道适配器你搜“OpenClaw dingding”,点开前十个结果,八成会误以为这是个能替代钉钉App的开源客户端——我第一次看到这个标题时也这么想。结果装完发现根本打不开聊天界面…

2026/6/24 19:18:28阅读更多 →
Python流场可视化:streamplot与streamlice函数深度解析与应用

Python流场可视化:streamplot与streamlice函数深度解析与应用

1. 从数据到洞察:流场可视化的核心价值 在流体力学、气象学、电磁场分析乃至金融数据流模拟等众多领域,我们常常面对的不是一个简单的标量值,而是一个充满方向与速度的矢量场。想象一下,你拿到了一份风场数据,里面密密…

2026/6/24 19:18:28阅读更多 →
Ziggurat算法:高效生成正态分布随机数的原理与实现

Ziggurat算法:高效生成正态分布随机数的原理与实现

1. 从“慢”到“快”:为什么我们需要Ziggurat算法? 如果你用过MATLAB里的 randn 函数,或者在任何需要生成正态分布随机数的场景里写过代码,你可能觉得这很简单,一行命令就搞定了。但如果你真的去深究过这行命令背后的…

2026/6/24 19:13:28阅读更多 →
【人工智能】一文搞定到底什么是智能体

【人工智能】一文搞定到底什么是智能体

【人工智能】一文搞定到底什么是智能体 一文搞定到底什么是智能体【人工智能】一文搞定到底什么是智能体一. LM,WorkFlow,Agent分别有什么么不同二. Agent的思考过程是怎样的三. Agent的五个核心部分1)LLM2)Prompt3)Me…

2026/6/24 7:33:03阅读更多 →
嵌入式GUI控件实战:ROTARY、SCROLLBAR、SLIDER原理与应用

嵌入式GUI控件实战:ROTARY、SCROLLBAR、SLIDER原理与应用

1. 嵌入式GUI控件:从原理到实战的深度解析在嵌入式系统开发中,图形用户界面(GUI)的设计与实现往往是项目从“能用”到“好用”的关键一跃。不同于资源充沛的PC或移动平台,嵌入式设备的GUI需要在有限的CPU性能、内存空间…

2026/6/24 2:12:09阅读更多 →
Google AI Studio 300美元额度的真相与实战指南

Google AI Studio 300美元额度的真相与实战指南

1. 这300美金不是“送钱”,而是Google埋下的第一道技术门槛 你看到标题里那个醒目的“$300美金”时,第一反应可能是:又一个免费额度?领完就完事?我亲手试过——这300美金根本不是红包,而是一张入场券&…

2026/6/24 7:37:00阅读更多 →
TaskJuggler脚本编程入门:用代码实现自动化项目管理

TaskJuggler脚本编程入门:用代码实现自动化项目管理

TaskJuggler脚本编程入门:用代码实现自动化项目管理 【免费下载链接】TaskJuggler TaskJuggler - Project Management beyond Gantt chart drawing 项目地址: https://gitcode.com/gh_mirrors/ta/TaskJuggler TaskJuggler是一款强大的开源项目管理工具&#…

2026/6/24 0:02:41阅读更多 →
终极教程:使用angular-mobile-nav实现流畅的移动页面过渡效果

终极教程:使用angular-mobile-nav实现流畅的移动页面过渡效果

终极教程:使用angular-mobile-nav实现流畅的移动页面过渡效果 【免费下载链接】angular-mobile-nav An angular navigation service for mobile applications 项目地址: https://gitcode.com/gh_mirrors/an/angular-mobile-nav angular-mobile-nav是一款专为…

2026/6/24 0:02:41阅读更多 →
Wan2.1-Fun-V1.1-1.3B-InP Web UI使用教程:无需代码的AI视频创作

Wan2.1-Fun-V1.1-1.3B-InP Web UI使用教程:无需代码的AI视频创作

Wan2.1-Fun-V1.1-1.3B-InP Web UI使用教程:无需代码的AI视频创作 【免费下载链接】Wan2.1-Fun-V1.1-1.3B-InP 项目地址: https://ai.gitcode.com/hf_mirrors/PAI/Wan2.1-Fun-V1.1-1.3B-InP Wan2.1-Fun-V1.1-1.3B-InP是一款强大的AI视频创作工具,…

2026/6/24 0:02:41阅读更多 →