DeepSeek    LeetCode 3734. 大于目标字符串的最小字典序回文排列 TypeScript实现
typescriptfunction lexPalindromicPermutation(s: string, target: string): string {const n: number s.length;const half: number Math.floor(n / 2);// 统计字符频次const cnt: number[] new Array(26).fill(0);for (const ch of s) {cnt[ch.charCodeAt(0) - 97];}// 检查能否构成回文奇数频次字符不能超过1个let oddChar: number -1;for (let i 0; i 26; i) {if (cnt[i] 1) {if (oddChar ! -1) return ;oddChar i;}}// 左半部分可用字符数量各取一半const leftCnt: number[] cnt.map(c Math.floor(c / 2));// 构造完整回文串const buildPalindrome (left: number[], odd: number): string {const res: string[] [];// 左半部分for (const c of left) {res.push(String.fromCharCode(c 97));}// 中间字符若有if (odd ! -1) {res.push(String.fromCharCode(odd 97));}// 右半部分左半部分反转for (let i left.length - 1; i 0; i--) {res.push(String.fromCharCode(left[i] 97));}return res.join();};// target 的左半部分数字表示const targetLeft: number[] target.slice(0, half).split().map(ch ch.charCodeAt(0) - 97);// 第一步尝试完全匹配 target 的左半部分const left: number[] new Array(half);const remain: number[] leftCnt.slice();let ok: boolean true;for (let i 0; i half; i) {const c targetLeft[i];if (remain[c] 0) {left[i] c;remain[c]--;} else {ok false;break;}}if (ok) {const candidate buildPalindrome(left, oddChar);if (candidate target) return candidate;}// 第二步从右向左尝试修改某个位置for (let pos half - 1; pos 0; pos--) {const remainCopy: number[] leftCnt.slice();const tempLeft: number[] new Array(half);let possible: boolean true;// 保持 pos 之前与 target 一致for (let i 0; i pos; i) {const c targetLeft[i];if (remainCopy[c] 0) {tempLeft[i] c;remainCopy[c]--;} else {possible false;break;}}if (!possible) continue;// 在 pos 处放入比 target[pos] 大的最小字符const targetC targetLeft[pos];let found false;for (let c targetC 1; c 26; c) {if (remainCopy[c] 0) {tempLeft[pos] c;remainCopy[c]--;found true;break;}}if (!found) continue;// pos 之后全部填最小字典序从小到大for (let i pos 1; i half; i) {for (let c 0; c 26; c) {if (remainCopy[c] 0) {tempLeft[i] c;remainCopy[c]--;break;}}}const candidate buildPalindrome(tempLeft, oddChar);if (candidate target) return candidate;}return ;}核心思路回文串由左半部分决定因此构造左半部分即可。先尝试与 target 左半部分完全相同若完整回文串大于 target 则直接返回否则从右向左寻找第一个可以增大的位置保持前面不变该位置填入比原字符大的最小可用字符之后用剩余字符的最小字典序填充最后构造回文串并返回。复杂度时间 O(26·n) ≈ O(n)空间 O(n)。

相关新闻

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

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

解题思路 本题要求用字符串 s 中的字符重新排列成一个回文串,使得该回文串的字典序严格大于 target,且在所有可能的回文串中字典序最小。 回文串由左半部分 中间字符(若长度为奇数) 右半部分(左半部分的反转&#x…

2026/7/27 7:54:38 阅读更多 →
数组是一种基本的线性数据结构,它由一组**连续内存空间中存储的相同类型元素**组成

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

数组是一种基本的线性数据结构,它由一组连续内存空间中存储的相同类型元素组成,通过**下标(索引)**进行随机访问(时间复杂度 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 阅读更多 →

最新新闻

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

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

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

2026/7/27 8:02:45 阅读更多 →
深入解析硬件CRC控制器:原理、模式与DMA协同实现零开销内存校验

深入解析硬件CRC控制器:原理、模式与DMA协同实现零开销内存校验

1. 项目概述:CRC控制器在嵌入式系统中的核心价值 在嵌入式系统开发,尤其是汽车电子、工业控制和通信设备这类对可靠性要求极高的领域,数据完整性是系统设计的生命线。想象一下,一辆行驶中的汽车,其控制单元&#xff08…

2026/7/27 8:02:45 阅读更多 →
水下AI视觉系统:光学成像与深度学习融合的技术突破

水下AI视觉系统:光学成像与深度学习融合的技术突破

这次我们来看一个结合AI技术与水下探索的创新项目。根据公开信息,一家由大疆背景团队创立的AI自然探索公司近期获得五源资本和顺为资本投资,其核心突破在于自主研发了全球首创的水下光学系统。这个项目将计算机视觉、深度学习与水下成像技术深度融合&…

2026/7/27 8:02:45 阅读更多 →
Linux计划任务Cron详解:配置、优化与实战技巧

Linux计划任务Cron详解:配置、优化与实战技巧

1. Linux计划任务进程概述 在Linux系统中,计划任务(Cron)是系统管理员和开发人员最常用的自动化工具之一。它允许用户在特定时间或间隔自动执行命令或脚本,无需人工干预。这个看似简单的功能,在实际运维工作中却承担着…

2026/7/27 8:02:45 阅读更多 →
LLM推理硬件可视化:WatchMachineGo工具实战与性能优化指南

LLM推理硬件可视化:WatchMachineGo工具实战与性能优化指南

LLM推理硬件可视化:WatchMachineGo工具实战指南在当前的AI应用开发中,大语言模型(LLM)推理性能优化是一个关键挑战。许多开发者在实际部署时发现,虽然拥有强大的GPU硬件,却难以直观了解推理过程中的硬件利用…

2026/7/27 8:02:45 阅读更多 →
AI论文降重工具评测与实战指南

AI论文降重工具评测与实战指南

1. 项目概述:论文AI痕迹检测与降重实战指南去年帮学弟修改毕业论文时,他用了某AI工具生成的文献综述部分被Turnitin标记出37%的AI率。我们试了三个通宵,最终用"千笔降AIGC助手"结合人工调整才把AI率压到8%以下。这个经历让我意识到…

2026/7/27 8:01:44 阅读更多 →

日新闻

【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 阅读更多 →

月新闻