当前位置: 首页 > news >正文

DeepSeek LeetCode 2663.字典序最小的的美丽字符串 Java实现

以下是 LeetCode 2663“字典序最小的美丽字符串”的 Java 实现。解题思路1. 理解“美丽字符串”· 长度为 n· 只包含前 k 个小写字母· 不包含任何长度大于 1 的回文子串· 实际上只需检查长度为 2 和 3 的回文因为更长回文一定包含短回文2. 核心要求· 找到字典序 大于 s 的最小美丽字符串· 如果不存在返回空字符串3. 贪心 回溯· 从字符串末尾开始尝试增加字符· 每次增加后检查是否与前面 1 位或 2 位形成回文· 如果冲突则继续增加如果无法增加则回退到前一位Java 代码javaclass Solution {public String smallestBeautifulString(String s, int k) {char[] chars s.toCharArray();int n chars.length;// 从末尾开始尝试for (int i n - 1; i 0; i--) {// 尝试将当前位置字符增加for (char c (char)(chars[i] 1); c a k; c) {// 检查是否与前面形成回文if (i 0 c chars[i - 1]) continue;if (i 1 c chars[i - 2]) continue;// 找到可行字符chars[i] c;// 将后面的字符填充为最小可行字符for (int j i 1; j n; j) {for (char d a; d a k; d) {if (j 0 d chars[j - 1]) continue;if (j 1 d chars[j - 2]) continue;chars[j] d;break;}}return new String(chars);}}return ;}}算法说明1. 回文检查· 只需要检查与前 1 位长度为 2 的回文· 和与前 2 位长度为 3 的回文· 因为更长的回文一定包含这两个中的某一个2. 贪心策略· 从右向左找到第一个可以增加的字符位置· 将其增加为满足条件的最小字符· 后续位置全部填充为最小可行字符3. 字符集限制· 只能使用 a 到 a k - 1 的字符示例演示java// 示例 1s abcz, k 26// 从末尾 z 无法增加// 前一位 c 增加到 d后面填充 a,b...// 结果 abdab// 示例 2s dc, k 4 // 字符集 {a,b,c,d}// 从末尾 c 无法增加只能到 d但 d 与前一位 d 形成回文 dd// 前一位 d 无法增加超出字符集// 返回 复杂度分析· 时间复杂度O(n * k)最坏情况需要尝试每个位置的所有字符· 空间复杂度O(n)存储字符数组优化版本更清晰的实现javaclass Solution {public String smallestBeautifulString(String s, int k) {char[] arr s.toCharArray();int n arr.length;// 从后往前尝试增加for (int i n - 1; i 0; i--) {// 尝试当前位置的所有更大字符for (char ch (char)(arr[i] 1); ch a k; ch) {// 检查是否与前面的字符形成回文if (i - 1 0 ch arr[i - 1]) continue;if (i - 2 0 ch arr[i - 2]) continue;// 找到可行解构造后续字符arr[i] ch;// 填充 i 之后的字符for (int j i 1; j n; j) {for (char c a; c a k; c) {if (j - 1 0 c arr[j - 1]) continue;if (j - 2 0 c arr[j - 2]) continue;arr[j] c;break;}}return new String(arr);}}return ;}}这个解法通过贪心 回溯确保找到字典序最小的美丽字符串。
http://www.gsyq.cn/news/1387616.html

相关文章:

  • NGUI锚点原理与计算公式详解:从漂移问题到精准布局
  • Unity XR中Point Light不生效的原理与三种替代方案
  • 保姆级教程:用Davinci配置RH850(F1KM)的PWM,从原理图到波形输出(附避坑点)
  • 用BW16模组+安信可透传云,5分钟搭建一个远程TCP数据收发demo(附完整AT指令集)
  • MicroBlaze软核在DDR3里跑,你的sleep函数为啥‘睡过头’了?Vitis 2020.1实测避坑
  • FastjsonScan:精准识别Fastjson组件与版本的协议层扫描工具
  • Unity IL2CPP启动失败与BepInEx注入时机冲突深度解析
  • 音频运放与电阻测试平台:标准化设计与实测指南
  • Excel与Tableau高效协同:从数据清洗到动态看板实战指南
  • 从感官实验到正念实践:如何通过系统化觉察重塑你的清晨体验
  • 如何将影像组学与病理组学特征与胃癌术后复发的“炎症‑耗竭”免疫机制建立关联,并解释其与患者预后及辅助化疗/免疫治疗响应的机制联系
  • 2026年比较好的别墅电梯/曳引别墅电梯/无障碍别墅电梯推荐厂家精选 - 品牌宣传支持者
  • 告别网络卡顿:RouterOS负载均衡配置全解析,从Mangle规则到DHCP设置的保姆级教程
  • JWT攻防实战:5种高危漏洞利用手法详解
  • 基于Kotlin与Jetpack Compose构建本地AI提示词管理工具
  • 从SRAM到Flash:微机原理里那些存储器,到底是怎么“记住”数据的?
  • 2026年热门的白铜线/江西弹簧铜线公司对比推荐 - 品牌宣传支持者
  • 2026年口碑好的轻集料混凝土/轻质混凝土/四川专用泡沫混凝土/四川轻质混凝土厂家哪家好 - 行业平台推荐
  • sns.histplot直方图参数详解:从数据分布可视化到统计决策
  • IDEA Diagrams保姆级教程:5分钟看懂Java类图,还能一键定位源码
  • Keil浮动许可证错误9445的排查与解决指南
  • HTTP.sys整数溢出漏洞CVE-2015-1635深度解析
  • 告别硬编码!用Aviator表达式引擎5.3.3动态配置你的Spring Boot应用
  • 告别枯燥理论!用Quartus II的ROM IP核生成三种波形,SignalTap实时看效果
  • AI应用开发必读:从EU AI Act风险分类到合规实战指南
  • Python数据可视化:按数据类型精准匹配8类高频图表
  • AI安全新范式:实时提示词过滤如何构建对话层免疫系统
  • 2026年多资产实时行情看板:统一数据流API架构与实战指南
  • Docker 部署 MongoDB 的可重现性实践与生产就绪指南
  • TVA在电子元器件领域的创新应用(7)