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/7/27 7:54:38 阅读更多 →
全球2026年版NPK水溶性肥料发展状况及投资战略分析报告

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

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

2026/7/27 7:53:38 阅读更多 →
Java开发者转型大模型应用:Python+LangChain实战

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

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

2026/7/27 7:53:38 阅读更多 →

最新新闻

英雄联盟智能助手Seraphine:告别繁琐查询,3分钟掌握全队数据

英雄联盟智能助手Seraphine:告别繁琐查询,3分钟掌握全队数据

英雄联盟智能助手Seraphine:告别繁琐查询,3分钟掌握全队数据 【免费下载链接】Seraphine 英雄联盟战绩查询工具 项目地址: https://gitcode.com/gh_mirrors/se/Seraphine 还在为查询队友战绩而频繁切换网页吗?还在BP阶段因为不了解对手…

2026/7/27 8:03:46 阅读更多 →
optimizerDuck 系统优化

optimizerDuck 系统优化

repo:GitHub - itsfatduck/optimizerDuck: Free, open-source Windows optimization tool for performance, privacy, and simplicity. GitHub optimizerDuck 做什么 & 为什么重要 Windows 开箱即用,表现本就不错。但即便是全新安装的 Windows&…

2026/7/27 8:03:46 阅读更多 →
华为MetaERP 以同样的大卡车生产BOM和价格数据,用 Oracle EBS(R12) 的三种成本方法重新走一遍全链路。Oracle EBS 的成本管理逻辑与 SAP 核心思想相通,但模块名称、事

华为MetaERP 以同样的大卡车生产BOM和价格数据,用 Oracle EBS(R12) 的三种成本方法重新走一遍全链路。Oracle EBS 的成本管理逻辑与 SAP 核心思想相通,但模块名称、事

大卡车(成品)├── 车架总成(半成品)│ ├── 钢材(原材料)│ └── 焊接辅料(原材料)├── 发动机(外购件)├── 轮胎(外购件)└…

2026/7/27 8:03:46 阅读更多 →
AI Agent记忆系统:从金鱼脑到持续进化的智能体

AI Agent记忆系统:从金鱼脑到持续进化的智能体

1. AI Agent记忆系统概述:从金鱼脑到持续进化的智能体 在2023年大模型爆发式发展的背景下,一个关键问题逐渐浮出水面:为什么拥有千亿参数的LLM在实际应用中仍会表现出"金鱼脑"特性?我曾参与过一个电商客服机器人的项目&…

2026/7/27 8:03:46 阅读更多 →
WIN11下OpenClaw与DeepSeek大模型整合部署指南

WIN11下OpenClaw与DeepSeek大模型整合部署指南

1. 项目概述:WIN11环境下OpenClaw与DeepSeek的整合方案在Windows 11操作系统上部署OpenClaw并集成DeepSeek模型,是当前AI应用开发领域的一个实用组合。OpenClaw作为开源AI框架,以其模块化设计和易扩展性著称,而DeepSeek则是近期表…

2026/7/27 8:03:45 阅读更多 →
MiniMax Agent:全栈式AI智能代理的技术解析与应用

MiniMax Agent:全栈式AI智能代理的技术解析与应用

1. MiniMax Agent:重新定义智能生产力工具 作为一名长期关注AI技术发展的从业者,我见证了从简单聊天机器人到如今具备复杂任务处理能力的智能代理(Agent)的演进历程。MiniMax Agent的出现,标志着AI应用进入了一个全新阶…

2026/7/27 8:02:45 阅读更多 →

日新闻

【JAVA毕设源码分享】基于SpringBoot的社区智能垃圾管理系统的设计与实现(程序+文档+代码讲解+一条龙定制)

【JAVA毕设源码分享】基于SpringBoot的社区智能垃圾管理系统的设计与实现(程序+文档+代码讲解+一条龙定制)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

2026/7/27 0:00:54 阅读更多 →
SPI实战指南:从时钟模式到寄存器配置,解决嵌入式通信难题

SPI实战指南:从时钟模式到寄存器配置,解决嵌入式通信难题

1. 项目概述:从寄存器手册到实战指南 如果你手头有一份类似德州仪器(TI)TMS320x240xA系列DSP的SPI模块技术手册,看着里面密密麻麻的寄存器位定义、时序图和公式,是不是感觉头大?这份资料虽然权威&#xff0…

2026/7/27 0:00:54 阅读更多 →
【JAVA毕设源码分享】基于springboot的水果购物管理系统的设计与实现(程序+文档+代码讲解+一条龙定制)

【JAVA毕设源码分享】基于springboot的水果购物管理系统的设计与实现(程序+文档+代码讲解+一条龙定制)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

2026/7/27 0:00:54 阅读更多 →

周新闻

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 数据集6000张 完整源码已标注数据集训练好的模型环境配置教程程序运行说明文档,可以直接使用!系统支持图片、视频、摄像头等多种方式检测裂缝,功能强大实用。 1数据集6000张 8各类别

2026/7/27 4:33:59 阅读更多 →
深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

pubg数据集 精选原图1.42万数据 1.49万标签 无任何重复、算法增强或冗余图像! pubg绝地求生目标检测数据集 1分类:e_body,14905个标签,txt格式 共计14244张图,99%为640*640尺寸图像 适合yolo目标检测、AI训练关键词&am…

2026/7/27 6:31:56 阅读更多 →
Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex检测数据集数据集详情检测类别: allies enemy tag图片总量:7247张训练集:5139张验证集:1425张测试集:683张标注状态:全部已标注,即拿即用数据格式:支持YOLO格式及其他格式&#…

2026/7/27 4:01:12 阅读更多 →

月新闻