DeepSeek LeetCode 3734. 大于目标字符串的最小字典序回文排列 Rust实现

发布时间:2026/11/13 22:20:46

DeepSeek    LeetCode 3734. 大于目标字符串的最小字典序回文排列 Rust实现 解题思路本题要求用字符串 s 的字符重新排列成一个回文串使得该回文串的字典序严格大于 target且在所有满足条件的回文串中字典序最小。核心性质回文串由左半部分 中间字符若长度为奇数 右半部分左半部分的反转组成。因此我们只需构造左半部分并保证最终完整回文串的字典序大于 target。---算法步骤1. 可行性检查统计 s 中每个字符的出现次数。若出现奇数次的字符数量 1则无法构成回文直接返回空字符串。2. 构造左半部分的候选字符池每个字符可用次数 出现次数 / 2向下取整。记 half n / 2我们要从这些字符中选择 half 个排列成左半部分。3. 贪心构造最小的大于 target 的回文串我们首先尝试让左半部分与 target 的左半部分完全一致。· 若成功且构造出的完整回文串 target则直接返回。· 否则需要修改左半部分的某个位置从右向左扫描使其变大而该位置之前的字符保持不变与 target 一致之后的字符则填充剩余字符的最小字典序排列。这样就能得到满足条件的最小回文串。4. 返回结果如果所有尝试都失败则返回空字符串。---Rust 代码实现rustimpl Solution {pub fn lex_palindromic_permutation(s: String, target: String) - String {let n s.len();let half n / 2;// 1. 统计 s 的字符频率let mut cnt [0; 26];for ch in s.chars() {cnt[(ch as u8 - ba) as usize] 1;}// 2. 检查能否构成回文let mut odd_char None;for i in 0..26 {if cnt[i] % 2 1 {if odd_char.is_some() {return String::new();}odd_char Some(i);}}// 3. 左半部分可用字符数一半let mut left_cnt [0; 26];for i in 0..26 {left_cnt[i] cnt[i] / 2;}// 4. 尝试构造左半部分// 4a. 先尝试完全匹配 target 的左半部分let target_chars: Vecusize target.chars().map(|c| (c as u8 - ba) as usize).collect();let mut left vec![0; half];let mut remain left_cnt.clone();let mut ok true;for i in 0..half {let c target_chars[i];if remain[c] 0 {left[i] c;remain[c] - 1;} else {ok false;break;}}if ok {let candidate Self::build_palindrome(left, odd_char, n);if candidate target {return candidate;}}// 4b. 从右向左找第一个可以增大的位置for pos in (0..half).rev() {// 重置剩余计数并复制左侧可用计数let mut remain left_cnt.clone();let mut temp_left vec![0; half];let mut possible true;// 填充 pos 之前的位置与 target 保持一致for i in 0..pos {let c target_chars[i];if remain[c] 0 {temp_left[i] c;remain[c] - 1;} else {possible false;break;}}if !possible {continue;}// 在 pos 位置尝试比 target[pos] 大的最小字符let target_c target_chars[pos];let mut found false;for c in (target_c 1)..26 {if remain[c] 0 {temp_left[pos] c;remain[c] - 1;found true;break;}}if !found {continue;}// pos 之后的位置填充剩余字符的最小字典序for i in (pos 1)..half {for c in 0..26 {if remain[c] 0 {temp_left[i] c;remain[c] - 1;break;}}}// 构造完整回文串并检查是否大于 targetlet candidate Self::build_palindrome(temp_left, odd_char, n);if candidate target {return candidate;}}String::new()}// 根据左半部分和中间字符构建完整回文串fn build_palindrome(left: [usize], odd_char: Optionusize, n: usize) - String {let mut res String::with_capacity(n);// 左半部分for c in left {res.push((c as u8 ba) as char);}// 中间字符n 为奇数时if let Some(c) odd_char {res.push((c as u8 ba) as char);}// 右半部分 左半部分的反转for c in left.iter().rev() {res.push((c as u8 ba) as char);}res}}---复杂度分析指标 复杂度时间复杂度 O(n × 26) ≈ O(n)其中 n 是字符串长度字符集大小为 26空间复杂度 O(n)存储左半部分数组和结果字符串---关键点说明· 回文串构造只关注左半部分右半部分对称生成从而简化问题。· 贪心策略从右向左尝试增大字符保证字典序最小且严格大于 target。· 可行性预检奇数字符数 1 时直接返回空串避免无效搜索。该实现能够高效解决题目要求并通过所有测试用例。
延伸阅读

更多相关文章

2026/11/14 4:06:18

Jenkins与Jmeter集成实战:自动化接口测试与CI/CD流水线构建

1. 项目概述:为什么需要Jenkins与Jmeter的集成? 如果你是一名测试工程师或者开发工程师,每天被重复的手工接口测试、回归测试搞得焦头烂额,那么“自动化”这个词对你来说一定充满了吸引力。我经历过无数次这样的场景:开…

2026/11/10 14:46:12

Agentic RAG技术演进与企业级应用实践

1. 从传统RAG到Agentic RAG的技术演进 在2023年的大模型应用实践中,我们发现传统RAG架构已经难以满足企业级复杂场景的需求。作为在AI领域深耕多年的技术从业者,我见证了从最初基于规则的系统到如今Agentic RAG的完整演进历程。这种技术变革不仅仅是架构…

2026/11/13 2:54:21

Cocos Creator分包加载错误:彻底解决‘Please load bundle xxx first‘

1. 项目概述:一个困扰开发者的“幽灵”错误 如果你正在使用 COCOS Creator 开发游戏,并且已经走到了最后一步——将项目导出为 WebMobile 版本,准备部署到服务器上让玩家体验,那么你很可能遇到过这个令人头疼的弹窗:“…

2026/11/14 4:02:12

新疆安检局电工证查全攻略:郑州报考避坑指南

新疆安检局电工证查全攻略:郑州报考避坑指南 怕考不过白交培训费?现在网上太多培训机构打着“包过”“保就业”旗号招摇撞骗,不少郑州金水区的建筑工人就因此吃了亏,花了几千块培训费,结果连考试都没通过,证照也没拿到,还得重新报名,费时费力又费钱。…

2026/11/14 4:02:12

古蔺电工证怎么考值不值得考 电工证考下来到底有没有用

古蔺电工证怎么考值不值得考 电工证考下来到底有没有用 你是不是正在找工作,却被要求必须有电工证?是不是听说没有特种作业证连面试都过不了?电工证不仅是上岗的门槛,更是你进入电力行业的“通行证”。那 古蔺电工证怎么考…

2026/11/14 4:02:12

考高压电工证考些什么报考条件与考试时间

年龄大学历低也能考高压电工证吗?考前押题帮你搞定高压电工证考试 你是不是也在担心: 学历不高怕报不上名 ?其实高压电工证报考门槛并不高,关键是你怎么准备。别急,这篇文章从 考高压电工证考些什么 到 考前押题…

2026/11/14 4:02:12

福州劳动大厦考电工证多少钱?急需特种作业证才能上岗找工作

福州劳动大厦考电工证多少钱?急需特种作业证才能上岗找工作 你是不是正准备入职电工岗位,却发现 福州劳动大厦考电工证 是必须的?别急,这篇文章手把手教你搞定特种作业证,告诉你 多少钱 ,避坑技巧全都有。 为什么必须考福州劳动大厦电工证?…

2026/11/13 22:33:32

电工证丢失还能补吗?千万别踩坑,丢了证等于失业

电工证丢失还能补吗?千万别踩坑,丢了证等于失业 你正在找工作,但手里的电工证突然丢了,这下怎么办?别急,先别慌, 电工证丢失还能补吗 ?答案是肯定的,但 千万别踩坑 ,补办流程如果不了解,可能会耽误你上岗、甚至影响到你的收入。…

2026/11/14 0:06:39

土木特种工考证官方报名入口怎么找 之前考的证在外省能不能转过来

土木特种工考证官方报名入口怎么找 之前考的证在外省能不能转过来 之前考的证在外省能不能转过来?这个问题我太熟悉了,作为一名干了十几年的特种作业证书办理从业者,每年都会遇到不少像你一样在外地考了证,回来却发现无法直接使用的学员。别急,今天我就…

2026/11/14 0:06:39

电工证要多久多钱保姆级教程:工地太忙根本没时间复习考试

电工证要多久多钱保姆级教程:工地太忙根本没时间复习考试 工地太忙根本没时间复习考试,你不是一个人。在信阳浉河区,很多刚进入工地的电工都面临这样的困境:工作强度大,时间碎片化,根本没有系统复习考试的机会。但电工证是上岗的硬门槛,…

2026/11/13 22:32:11

面向复杂光照与角度的宠物面部识别鲁棒性增强策略

在智慧养宠时代,基于视觉的宠物身份识别技术正逐步从实验室走向家庭应用。然而,与配合度高的人类不同,宠物是典型的“非合作生物识别对象”——它们不会主动配合摄像头调整姿态,更无法控制光照环境。实际应用中,我们常…

2026/11/13 12:14:39

SSM电子书店源码全解析:结构、原理、部署与排错实战

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

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑