• 编程练习【破环回文数】


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

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

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

     
    示例 1:

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

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

    题目来源:力扣(LeetCode)
    链接:https://leetcode.cn/problems/break-a-palindrome
    著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

    思路:破环回文数,且需要破坏后字典序小,直接遍历回文串,找到第一个大于“a”的字符,将它替换成“a”即可,如果遍历完没有说明字符串全是“a”,那么直接将最后一个字符替换成“b”即可。

    代码:

    1. public static String breakPalindrome(String palindrome) {
    2. int len=palindrome.length();
    3. if(len==1) {//字符串长度为1时,返回“”
    4. return "";
    5. }
    6. for(int i=0;i<(len>>1);i++) {//只需要遍历字符串一半长度
    7. if(palindrome.charAt(i)>'a') {//找到第一个比‘a’的字符,替换成‘a’
    8. return palindrome.replaceFirst(palindrome.charAt(i)+"", "a");
    9. }
    10. }
    11. return palindrome.substring(0,len-1)+"b";//整个字符串没有,则将最后一个字符替换成‘b’
    12. }

  • 相关阅读:
    Docker安装rabbitmq并配置延迟队列
    七牛云 vue 图片上传简单解说,js 上传文件图片
    如何在uniapp中实现二维码生成功能
    dnmp运行时404报错
    iOS自动化测试框架Kiwi快速上手
    RabbitMQ快速入门--simple简单模式
    算法基础-dfs的经验
    【Java基础面试三十五】、谈谈你对面向接口编程的理解
    人工智能在电子商务中的突破性优势
    抽象与面向对象
  • 原文地址:https://blog.csdn.net/weixin_52237268/article/details/130894940