DeepSeek    LeetCode 3734. 大于目标字符串的最小字典序回文排列 Java实现
解题思路本题的核心在于回文串只需确定左半部分右半部分由左半部分对称得到。因此问题转化为用 s 中一半的字符各取一半构造一个长度为 n/2 的字符串使其对应的完整回文串严格大于 target。解题分两步1. 可行性校验统计 s 中字符频次若出现奇数次的字符超过 1 个则无法构成回文直接返回空串。2. 贪心构造左半部分· 先尝试让左半部分与 target 左半部分完全一致然后检查构造出的完整回文串是否大于 target。若是直接返回。· 若不行从右向左找到第一个可以增大的位置填入比 target 对应位置稍大的字符该位置之后的字符按字典序最小填充即从小到大填入剩余字符。---Java 代码实现javaclass Solution {public String lexPalindromicPermutation(String s, String target) {int n s.length();int half n / 2;// 1. 统计 s 中字符频次int[] cnt new int[26];for (char c : s.toCharArray()) cnt[c - a];// 2. 检查能否构成回文奇数频次字符不能超过 1 个int oddChar -1;for (int i 0; i 26; i) {if (cnt[i] % 2 1) {if (oddChar ! -1) return ;oddChar i;}}// 3. 左半部分可用字符每个字符取一半int[] leftCnt new int[26];for (int i 0; i 26; i) leftCnt[i] cnt[i] / 2;// 4. 贪心构造左半部分int[] left new int[half];int[] remain leftCnt.clone();// 4a. 先尝试完全匹配 target 的左半部分boolean match true;for (int i 0; i half; i) {int c target.charAt(i) - a;if (remain[c] 0) {left[i] c;remain[c]--;} else {match false;break;}}if (match) {// 完全匹配成功构造完整回文串检查是否大于 targetString candidate buildPalindrome(left, remain, oddChar, n);if (candidate.compareTo(target) 0) return candidate;}// 4b. 从右向左找第一个可以增大的位置for (int pos half - 1; pos 0; pos--) {// 重置剩余计数remain leftCnt.clone();int[] tempLeft new int[half];boolean ok true;// 填充 pos 之前的位置与 target 一致for (int i 0; i pos; i) {int c target.charAt(i) - a;if (remain[c] 0) {tempLeft[i] c;remain[c]--;} else {ok false;break;}}if (!ok) continue;// 在 pos 位置填入比 target[pos] 大的最小字符int targetChar target.charAt(pos) - a;boolean found false;for (int c targetChar 1; c 26; c) {if (remain[c] 0) {tempLeft[pos] c;remain[c]--;found true;break;}}if (!found) continue;// pos 之后的位置填入剩余字符的最小字典序for (int i pos 1; i half; i) {for (int c 0; c 26; c) {if (remain[c] 0) {tempLeft[i] c;remain[c]--;break;}}}// 构造完整回文串并检查String candidate buildPalindrome(tempLeft, remain, oddChar, n);if (candidate.compareTo(target) 0) return candidate;}return ;}// 根据左半部分构造完整回文串private String buildPalindrome(int[] left, int[] remain, int oddChar, int n) {int half n / 2;StringBuilder sb new StringBuilder();// 左半部分for (int i 0; i half; i) sb.append((char)(left[i] a));// 中间字符仅当 n 为奇数if (n % 2 1) sb.append((char)(oddChar a));// 右半部分 左半部分反转for (int i half - 1; i 0; i--) sb.append((char)(left[i] a));return sb.toString();}}---复杂度分析指标 复杂度时间复杂度 O(n × 26) ≈ O(n)其中 n 为字符串长度字符集大小为 26空间复杂度 O(n)存储左半部分数组和结果字符串

相关新闻

京东咚咚架构演进

京东咚咚架构演进

京东咚咚架构演进 一、引言:从即时通讯到分布式架构的蜕变京东咚咚作为京东商城内部员工和商家之间的核心即时通讯工具,承担着每日数亿条消息的实时传递任务。早期的咚咚架构非常简单,仅支持单机部署,但随着业务量的爆发式增长&am…

2026/7/27 8:27:26阅读更多 →
Personal Jarvis:本地化语音助手的技术原理与实践指南

Personal Jarvis:本地化语音助手的技术原理与实践指南

你是否曾经想过,如果有一个像《钢铁侠》中 Jarvis 那样的智能助手,能够通过语音控制你的电脑,会是怎样的体验?今天要介绍的 Personal Jarvis,正是这样一个开源项目——它不是一个简单的语音转文字工具,而是…

2026/7/27 8:25:26阅读更多 →
Claude Code文件过滤机制与Token优化实战

Claude Code文件过滤机制与Token优化实战

1. Claude Code文件过滤机制深度解析作为AI辅助编程工具链中的新锐成员,Claude Code通过精细化的文件过滤系统确保开发环境的安全性与效率。这套机制主要由两个核心配置文件构成:项目级的.claudeignore和系统级的permissions.deny。前者类似于Git的.giti…

2026/7/27 8:25:26阅读更多 →
CAN总线位定时配置:从原理到实践,解决通信错误的关键

CAN总线位定时配置:从原理到实践,解决通信错误的关键

1. 项目概述:为什么CAN总线的位定时如此关键? 在嵌入式系统,尤其是汽车电子和工业控制领域,Controller Area Network (CAN) 总线是连接各个电子控制单元(ECU)的神经系统。它负责传递油门、刹车、发动机转速…

2026/7/27 16:40:25阅读更多 →
计算机毕业设计之家乡电商网站

计算机毕业设计之家乡电商网站

本毕业设计的内容是设计并且实现一个基于PHP语言的家乡电商网站。它是在Windows下,以MYSQL为数据库开发平台,家乡电商网站的功能已基本实现,主要包括会员、商品分类、商品信息、订单信息等。论文主要从系统的分析与设计 、数据库设计和系统的…

2026/7/27 16:40:25阅读更多 →
电压跟随器驱动容性负载的噪声增益整形技术详解

电压跟随器驱动容性负载的噪声增益整形技术详解

1. 项目概述:当电压跟随器遇上“电容杀手”在模拟电路设计里,电压跟随器(也叫单位增益缓冲器)大概是工程师们最熟悉也最“放心”的电路之一了。它的任务简单纯粹:高输入阻抗、低输出阻抗,完美地“跟随”输入…

2026/7/27 16:40:25阅读更多 →
DS90UB921-Q1评估板实战:FPD-Link III SerDes硬件配置与ALP软件调试指南

DS90UB921-Q1评估板实战:FPD-Link III SerDes硬件配置与ALP软件调试指南

1. 项目概述与核心价值在车载信息娱乐系统、高级驾驶辅助系统(ADAS)以及多屏显示的开发过程中,工程师们常常面临一个核心挑战:如何将高分辨率、高帧率的视频信号,连同音频和控制数据,稳定、可靠且低延迟地从…

2026/7/27 16:40:25阅读更多 →
边缘计算中的实时目标检测:挑战、优化与工程实践

边缘计算中的实时目标检测:挑战、优化与工程实践

1. 边缘设备实时目标检测的核心挑战与机遇 在智能安防摄像头前驻足观察时,你可能已经亲身体验过边缘计算的魅力——当摄像头瞬间识别出未佩戴口罩的人员并触发警报,这背后正是边缘设备上的实时目标检测在发挥作用。与云端方案相比,边缘设备直…

2026/7/27 16:40:25阅读更多 →
中小企业如何用AI自建CRM系统:从Salesforce迁移到低成本方案

中小企业如何用AI自建CRM系统:从Salesforce迁移到低成本方案

1. 先搞清楚“Salesforce退订潮”背后到底发生了什么 最近不少美国小企业开始停用Salesforce,转向用AI工具自建客户关系管理系统。这件事的核心不是Salesforce不好用,而是很多中小企业发现,他们实际需要的功能可能用更轻量的AI方案就能解决&a…

2026/7/27 16:38:25阅读更多 →
覆盖国产 + 海外 + 开源模型,OpenClaw 2.7.9 Windows/Mac 双端部署详解

覆盖国产 + 海外 + 开源模型,OpenClaw 2.7.9 Windows/Mac 双端部署详解

🔹 工具基础介绍 OpenClaw 是开源生态中一款实用性较强的本地智能工具,凭借本地离线运行、可视化图形操作和任务自动化三大核心特性,赢得了众多用户的青睐。与普通在线对话AI工具不同,它属于能够直接操控本机软硬件的智能数字员工…

2026/7/27 1:14:34阅读更多 →
伺服阀焊完微漏毁整机?精密激光焊接三关锁住高压

伺服阀焊完微漏毁整机?精密激光焊接三关锁住高压

所谓液压伺服阀体的精密激光焊接,是用激光束对阀座壳体(通常为不锈钢或铝合金)进行密封焊接,使阀体在21-35MPa的高压液压油或压缩气体中长期运行而不发生介质泄漏。液压伺服阀是高端液压系统的"大脑"。从航空航天飞行控…

2026/7/27 1:14:52阅读更多 →
D2DX:三步实现《暗黑破坏神2》高清宽屏体验的终极指南

D2DX:三步实现《暗黑破坏神2》高清宽屏体验的终极指南

D2DX:三步实现《暗黑破坏神2》高清宽屏体验的终极指南 【免费下载链接】d2dx D2DX is a complete solution to make Diablo II run well on modern PCs, with high fps and better resolutions. 项目地址: https://gitcode.com/gh_mirrors/d2/d2dx 你是否还在…

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

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

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

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

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

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

2026/7/27 0:00:24阅读更多 →
2007-2023年各市区县生态文明建设示范区DID

2007-2023年各市区县生态文明建设示范区DID

数据简介 自改革开放以来,我国依赖高投入、高资源消耗和高污染等传统发展模式实现了经济短期内的快速增长, 然而这也导致了严重的生态环境危机。因此,国家有力于推动企业高质量经济发展,协同生态保护的方针,从而从201…

2026/7/27 0:00:24阅读更多 →
YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

如果你在部署 YOLOv8 时,发现推理速度只有可怜的 1-2 FPS,而别人的演示视频却能跑到 30 FPS 以上,那么问题很可能不在模型本身,而在于你的整个处理链路。很多开发者拿到一个训练好的 YOLOv8 模型后,会直接使用官方示例…

2026/7/25 23:03:25阅读更多 →
Coze与Dify对比指南:低代码AI应用开发从入门到实战

Coze与Dify对比指南:低代码AI应用开发从入门到实战

1. 从零到一:为什么你需要了解 Coze 和 Dify?如果你对 AI 应用开发感兴趣,但一看到“大模型”、“智能体”、“工作流”这些词就头疼,觉得门槛太高,那这篇文章就是为你准备的。很多开发者,包括我自己&#…

2026/7/26 19:05:21阅读更多 →
AI生图工具怎么选?2026年6月版实测对比

AI生图工具怎么选?2026年6月版实测对比

做自媒体的朋友应该都有体会:配图一直是个让人头疼的问题。2026年,AI生图工具已经非常成熟了,但工具太多反而不知道怎么选。以下是截至2026年6月我对主流AI生图工具的实测对比。Midjourney V8.1:速度之王2026年6月11日&#xff0c…

2026/7/26 19:05:21阅读更多 →