DeepSeek    LeetCode 3734. 大于目标字符串的最小字典序回文排列 Python3实现
解题思路本题要求用字符串 s 中的字符重新排列成一个回文串使得该回文串的字典序严格大于 target且在所有可能的回文串中字典序最小。回文串由左半部分 中间字符若长度为奇数 右半部分左半部分的反转 构成。因此我们只需关注左半部分的构造右半部分自动对称生成。算法步骤1. 可行性检查统计 s 中每个字符的出现次数。若出现奇数次的字符数量 1则无法构成回文直接返回空字符串。2. 准备左半部分的字符池每个字符可用的数量为 count // 2左半部分总长度为 n // 2。3. 贪心构造左半部分· 尝试完全匹配 target 的左半部分若成功且构造出的完整回文串大于 target直接返回。· 否则从右向左扫描左半部分寻找第一个可以增大的位置 pos· 保持 pos 之前的字符与 target 对应位置完全一致利用可用字符。· 在 pos 处填入比 target[pos] 大的最小字符。· 将 pos 之后的位置填入剩余字符的最小字典序排列从小到大依次填充。· 构造完整回文串若大于 target 则返回否则继续尝试更靠左的位置。· 若所有尝试均失败返回空字符串。---Python3 代码pythonclass Solution:def lexPalindromicPermutation(self, s: str, target: str) - str:n len(s)half n // 2# 1. 统计字符频率cnt [0] * 26for ch in s:cnt[ord(ch) - ord(a)] 1# 2. 检查能否构成回文奇数频次的字符最多一个odd_char -1for i in range(26):if cnt[i] % 2 1:if odd_char ! -1:return odd_char i# 3. 左半部分可用字符数量每个字符取一半left_cnt [c // 2 for c in cnt]# 辅助函数根据左半部分和中间字符构造完整回文串def build_palindrome(left: list, odd: int) - str:res []# 左半部分for c in left:res.append(chr(c ord(a)))# 中间字符if odd ! -1:res.append(chr(odd ord(a)))# 右半部分左半部分反转for c in reversed(left):res.append(chr(c ord(a)))return .join(res)# 4. 先尝试直接匹配 target 的左半部分target_left [ord(ch) - ord(a) for ch in target[:half]]left [0] * halfremain left_cnt[:]ok Truefor i in range(half):c target_left[i]if remain[c] 0:left[i] cremain[c] - 1else:ok Falsebreakif ok:candidate build_palindrome(left, odd_char)if candidate target:return candidate# 5. 从右向左尝试修改某个位置贪心找最小的大于 target 的回文串for pos in range(half - 1, -1, -1):remain left_cnt[:] # 重置可用字符计数temp_left [0] * halfpossible True# 填充 pos 之前的位置与 target 完全一致for i in range(pos):c target_left[i]if remain[c] 0:temp_left[i] cremain[c] - 1else:possible Falsebreakif not possible:continue# 在 pos 位置尝试填入比 target[pos] 大的最小字符target_c target_left[pos]found Falsefor c in range(target_c 1, 26):if remain[c] 0:temp_left[pos] cremain[c] - 1found Truebreakif not found:continue# pos 之后的位置填入剩余字符的最小字典序从小到大for i in range(pos 1, half):for c in range(26):if remain[c] 0:temp_left[i] cremain[c] - 1break# 构造完整回文串并检查是否大于 targetcandidate build_palindrome(temp_left, odd_char)if candidate target:return candidatereturn ---复杂度分析· 时间复杂度O(26 × n) ≈ O(n)其中 n 为字符串长度常数 26 是字符集大小。每次尝试填充时都要扫描 26 个字符但整体线性。· 空间复杂度O(n)用于存储左半部分数组和结果字符串。---示例验证python# 示例sol Solution()print(sol.lexPalindromicPermutation(abccba, aaaaaa)) # 输出: abccba (恰好等于 target不需要严格大于若无则返回空)print(sol.lexPalindromicPermutation(abc, abc)) # 输出: (无法构成回文)print(sol.lexPalindromicPermutation(aabb, aaaa)) # 输出: abba (用 a,a,b,b 构成最小大于 aaaa 的回文)代码清晰能正确解决问题。如有疑问欢迎继续交流

相关新闻

数组是一种基本的线性数据结构,它由一组**连续内存空间中存储的相同类型元素**组成

数组是一种基本的线性数据结构,它由一组**连续内存空间中存储的相同类型元素**组成

数组是一种基本的线性数据结构,它由一组连续内存空间中存储的相同类型元素组成,通过**下标(索引)**进行随机访问(时间复杂度 O(1))。数组具有固定大小(静态数组)或动态扩容能力&…

2026/10/9 22:52:01 阅读更多 →
全球2026年版NPK水溶性肥料发展状况及投资战略分析报告

全球2026年版NPK水溶性肥料发展状况及投资战略分析报告

全球2026年版NPK水溶性肥料发展状况及投资战略分析报告PIN结光电二极管是一种基于半导体PN结结构改进的光电探测器,其核心特征是在P型半导体和N型半导体之间插入一层本征(或低掺杂)半导体材料(称为I层)。当光照射到PIN…

2026/10/10 14:51:02 阅读更多 →
Java开发者转型大模型应用:Python+LangChain实战

Java开发者转型大模型应用:Python+LangChain实战

1. 从Java开发者转型大模型应用的实战路径作为一名有十年Java开发经验的程序员,去年我开始系统学习Python和大模型应用开发。这个转型过程远比想象中顺利——Java的扎实编程基础让我能快速掌握Python语法,而面向对象思维和设计模式经验在大模型应用开发中…

2026/10/14 1:23:43 阅读更多 →

最新新闻

artcraft 项目实战:从创意到成品的流程编排与参数体系设计

artcraft 项目实战:从创意到成品的流程编排与参数体系设计

1. 从“artcraft”这个名字说起:它到底想解决什么问题第一次看到“artcraft”这个项目标题,我的直觉是:这大概率是一个把“艺术创作”和“手工实现”捏合在一起的工具型项目。拆开来看,“art”指向视觉表达、创意生成、审美输出&a…

2026/10/15 8:26:36 阅读更多 →
Spring Boot开发实战:从入门到高效微服务构建

Spring Boot开发实战:从入门到高效微服务构建

1. 为什么选择Spring Boot第一次接触Spring Boot是在2016年参与一个企业级微服务项目时。当时团队还在使用传统的Spring MVC框架,光是搭建一个基础项目就需要配置几十个XML文件,每次启动项目都要花费近10分钟。直到技术负责人引入了Spring Boot&#xff…

2026/10/15 8:26:36 阅读更多 →
diagram-design:从画图到设计系统,图表规范与协作实践指南

diagram-design:从画图到设计系统,图表规范与协作实践指南

1. 从一张草图到一套系统:diagram-design 到底在解决什么问题第一次听到“diagram-design”这个词,很多人会下意识觉得它只是“画图”的另一种说法。但真正在项目里被图表折磨过的人知道,画图只是冰山一角,水面下藏着的是一整套关…

2026/10/15 8:26:36 阅读更多 →
前端浏览器类型与IE版本判断:从UA解析到特性检测的完整方案

前端浏览器类型与IE版本判断:从UA解析到特性检测的完整方案

1. 浏览器判断这件事,远比想象中要复杂浏览器类型判断,尤其是区分IE浏览器,看起来像是个老掉牙的话题。很多前端同行的第一反应是:这年头谁还管IE?但实际情况是,只要你还在一线做企业级项目、后台管理系统、…

2026/10/15 8:26:36 阅读更多 →
C语言实现九九乘法表:循环与格式化输出详解

C语言实现九九乘法表:循环与格式化输出详解

1. 项目概述:C语言实现九九乘法表九九乘法表是编程初学者最经典的练手项目之一。这个看似简单的需求,实际上涵盖了循环控制、格式化输出、算法逻辑等多个基础编程概念。用C语言实现乘法表,不仅能巩固基础语法,更能培养对程序结构的…

2026/10/15 8:26:36 阅读更多 →
从画图到设计:用文本化DSL把架构图变成可维护的工程资产

从画图到设计:用文本化DSL把架构图变成可维护的工程资产

平时我见得最多的“图”,不是最终文档里那张漂亮的架构图,而是评审会上被临时画在白板上的方框加箭头。主讲人一边画一边改,台下的人一边看一边猜。等会议结束,没人记得箭头谁指向谁,只记得“好像讲了一个方案”。后来…

2026/10/15 8:25:33 阅读更多 →

日新闻

Docker Compose 容器化部署 ChirpStack LoRaWAN 网络服务器实战

Docker Compose 容器化部署 ChirpStack LoRaWAN 网络服务器实战

1. 为什么选择容器化方式部署 LoRa 网络服务LoRa 物联网项目落地时,网络服务器是整个链路的核心枢纽。它负责接收网关上报的数据包、完成去重与解密、再把有效载荷分发给上层应用。早期大家习惯把网络服务器直接装在物理机上,依赖一堆系统库和特定版本的…

2026/10/15 0:00:46 阅读更多 →
共享LLM服务下的跨模型自动扩缩容:Kubernetes实战与避坑指南

共享LLM服务下的跨模型自动扩缩容:Kubernetes实战与避坑指南

1. 共享推理服务里,扩缩容到底难在哪做过大模型推理服务部署的人,大概都经历过这样的场景:一个团队共用一套推理集群,A 业务跑的是 7B 的小模型,B 业务跑的是 72B 的大模型,C 业务白天流量高、晚上几乎归零…

2026/10/15 0:00:46 阅读更多 →
Systemd 启动阶段根文件系统只读之谜:fstab 与 remount-fs 服务深度解析

Systemd 启动阶段根文件系统只读之谜:fstab 与 remount-fs 服务深度解析

1. 引子:一次内核恐慌引发的追查先从一个真实场景说起。某次我给一台老旧的嵌入式设备折腾系统裁减,为了把启动时间压进两秒以内,我手贱地把一串自认为“没用”的 systemd 服务给 disable 了,其中就包括systemd-remount-fs.servic…

2026/10/15 0:00:46 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/14 3:30:28 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/14 16:30:29 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/14 3:29:58 阅读更多 →

月新闻

我发现了一个新思路:用 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/15 0:14:36 阅读更多 →
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/14 22:45:47 阅读更多 →
黑夜航拍船只数据集训练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/14 7:53:34 阅读更多 →