首页 > 其他分享 >[LeetCode] 1328. Break a Palindrome

[LeetCode] 1328. Break a Palindrome

时间:2022-10-11 07:12:02浏览次数:87  
标签:palindrome word string 1328 character Break Palindrome 字符串 回文

Given a palindromic string of lowercase English letters palindrome, replace exactly one character with any lowercase English letter so that the resulting string is not a palindrome and that it is the lexicographically smallest one possible.

Return the resulting string. If there is no way to replace a character to make it not a palindrome, return an empty string.

A string a is lexicographically smaller than a string b (of the same length) if in the first position where a and b differ, a has a character strictly smaller than the corresponding character in b. For example, "abcc" is lexicographically smaller than "abcd" because the first position they differ is at the fourth character, and 'c' is smaller than 'd'.

Example 1:

Input: palindrome = "abccba"
Output: "aaccba"
Explanation: There are many ways to make "abccba" not a palindrome, such as "zbccba", "aaccba", and "abacba".
Of all the ways, "aaccba" is the lexicographically smallest.

Example 2:

Input: palindrome = "a"
Output: ""
Explanation: There is no way to replace a single character to make "a" not a palindrome, so return an empty string.

Constraints:

  • 1 <= palindrome.length <= 1000
  • palindrome consists of only lowercase English letters.

破坏回文串。

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

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

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

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

题目的 input 给的是一个合法的回文串,我们要做的是修改其中的一个字母,从而使得修改过后的字符串不是回文串同时字典序最小。

我们回顾回文串的定义,发现回文串只有两种情况,一种是 abba,一种是 aba。同时既然需要做到修改之后字典序最小,那么我们只看字符串的左半边就好了,看右半边是无法做到修改后的结果是字典序最小的。这道题我们需要注意两个 corner case,一个是如果input中字母都是a,类似 aaaaaaa 的话,那么我们只能通过把最后一个 a 改成 b 来保证修改结果字典序最小。另外一个 case 是比如例子二,那么我们只能将他改成空字符串返回。

时间O(n)

空间O(n) - char array

Java实现

 1 class Solution {
 2     public String breakPalindrome(String palindrome) {
 3         int len = palindrome.length();
 4         char[] word = palindrome.toCharArray();
 5         for (int i = 0; i < len / 2; i++) {
 6             if (word[i] != 'a') {
 7                 word[i] = 'a';
 8                 return String.valueOf(word);
 9             }
10         }
11         word[len - 1] = 'b';
12         if (len < 2) {
13             return "";
14         }
15         return String.valueOf(word);
16     }
17 }

 

LeetCode 题目总结

标签:palindrome,word,string,1328,character,Break,Palindrome,字符串,回文
From: https://www.cnblogs.com/cnoodle/p/16777967.html

相关文章

  • Method breakpoints may dramatically slow down debugging 解决 项目无法启动 打开Br
    Methodbreakpointsmaydramaticallyslowdowndebugging解决项目无法启动打开Breakpoints面板(快捷键:Ctrl-Shift-F8),将断点取消勾选即可。项目无法启动了......
  • 靶场VNH练习(5)Breakout
    靶场名称:Breakout难度:简单目标:拿到root权限下载链接:https://www.vulnhub.com/entry/empire-breakout,751/环境搭建安装好虚拟机,打开就可以看到靶机ip渗透开始首......
  • 2022-2023-1 20221328 《计算机基础与程序设计》第六周学习总结
    作业信息班级:首页-2022-2023-1-计算机基础与程序设计-北京电子科技学院-班级博客-博客园(cnblogs.com)作业要求:2022-2023-1《计算机基础与程序设计》教学进程......
  • idea在continue的breakpoint不起作用
    1,背景调试代码的时候遇到continue处的breakpoint不起作用,故记录一下过程。2,分析过程2.1,复现publicclasstest{publicstaticvoidmain(String[]args){......
  • Demo23_or循环与while循环的区别 break与continue的区别
    //for循环与while循环的区别break与continue的区别packagecom.HuanXin.JiBen_JieGou_4;publicclassDemo12_break_continue{publicstaticvoidmain(String[]arg......
  • Demo21_关于break
    //break的理解packagecom.HuanXin.JiBen_JieGou_4;publicclassDemo10_break{publicstaticvoidmain(String[]args){for(inti=0;i<100;i++){......
  • break语句
    break语句可以用于循环语句中,其作用是从循环体内跳出循环,即提前结束循环,接着执行循环语句下面的语句。 如果循环条件不成立,循环语句就执行完毕,这是循环的正常出口,而执行b......
  • Say No to Palindromes
    传送门题意:一个字符串s,只由a,b,c三种字符构成,有m次询问,每次询问一个区间l,r,可以操作使l,r子串的某个字符改变,问需要的最少的次数使得,l,r区间之内的字符串,没有回......
  • JS基础 -- if分别使用return、break、continue的区别
    /**if分别使用return、break、continue的区别**break:使用break可以退出当前的循环**continue:用于跳过当次循环**return:使用return可以结束整个函数**下面用......
  • java---return,break,continue作用
    一:return在函数体中遇到return语句,则结束函数执行(函数体未执行完部分不再执行),将表达式的值返回到函数调用处。使用return最多只能返回一个值!二:breakbreak主要用在循......