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

LeetCode:1328. 破坏回文串(贪心 Java)

目录

1328. 破坏回文串

题目描述:

实现代码与解析:

贪心

原理思路:


1328. 破坏回文串

题目描述:

        给你一个由小写英文字母组成的回文字符串 palindrome ,请你将其中 一个 字符用任意小写英文字母替换,使得结果字符串的 字典序最小 ,且 不是 回文串。

请你返回结果字符串。如果无法做到,则返回一个 空串 。

如果两个字符串长度相同,那么字符串 a 字典序比字符串 b 小可以这样定义:在 a 和 b 出现不同的第一个位置上,字符串 a 中的字符严格小于 b 中的对应字符。例如,"abcc” 字典序比 "abcd" 小,因为不同的第一个位置是在第四个字符,显然 'c' 比 'd' 小。

示例 1:

输入:palindrome = "abccba"
输出:"aaccba"
解释:存在多种方法可以使 "abccba" 不是回文,例如 "zbccba", "aaccba", 和 "abacba" 。
在所有方法中,"aaccba" 的字典序最小。

示例 2:

输入:palindrome = "a"
输出:""
解释:不存在替换一个字符使 "a" 变成非回文的方法,所以返回空字符串。

提示:

  • 1 <= palindrome.length <= 1000
  • palindrome 只包含小写英文字母。

实现代码与解析:

贪心

class Solution {
    public String breakPalindrome(String palindrome) {
        
        int n = palindrome.length();
        if (n == 1) {
            return "";
        }
        char[] cs = palindrome.toCharArray();
        for (int i = 0; i * 2 + 1 < n; i++) {
            if (cs[i] != 'a') {
                cs[i] = 'a';
                return new String(cs);
            }
        }
        cs[n - 1] = 'b';
        return new String(cs);
    }
}

原理思路:

        n = 1,无论如何换都是回文。遍历字符串一半,如果不为a换成a。如果前半部分全为a,那么根据回文特性,该字符串全为a,只有把最后一个字符修改为小于a的第一个值b即可。

相关文章:

  • 嵌入式硬件发展历程
  • 本地YARN集群部署
  • 【AI论文】Difix3D+: 利用单步扩散模型改进3D重建
  • 【JavaSE-5】程序逻辑控制相关练习题
  • XS9935 ,4通道模拟复合视频解码芯片,双向音频数据同轴共缆传输
  • 如何远程访问svn中的URL
  • 【After Effects AE 动画特效制作笔记】
  • 使用AD画PCB时解决焊盘无法出线的问题
  • CASAIM与承光电子达成深度合作,三维扫描逆向建模技术助力车灯设计与制造向数字化与智能化转型
  • //定义一个方法,实现字符串反转//键盘输入一个字符串,调用该方法后,在控制台输出结果
  • 十一、Redis Sentinel(哨兵)—— 高可用架构与配置指南
  • .keystore文件转成pkcs1.pem文件记录
  • 【GStreamer】基于gst和gtk的简单videoplayer
  • 风虎云龙R87与RH87八卡服务器震撼首发
  • 如何获取BIOS信息
  • 如何解决软件开发中用户参与度低,反馈滞后的问题
  • IIC总线注意事项
  • XML布局文件与常用View组件
  • Linux(ubuntu)环境下部署The Fuck项目的方法(保姆级教程)
  • 永磁同步电机无速度算法--改进滑模观测器SMO(边界层法)
  • 专门做机器人的网站/论坛推广
  • 自贡建设局网站/网站域名解析
  • 建德建设局官方网站/外链工具xg
  • 网站建站步骤流程/seo网站优化推广怎么样
  • 怎么做网站站长/外包公司为什么没人去
  • 软件开发工资一般多少深圳/玉溪seo