Table of Contents
Description: Break a 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
1 2 3 4 |
<strong>Input:</strong> palindrome = "abccba" <strong>Output:</strong> "aaccba" <strong>Explanation:</strong> 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
1 2 3 |
<strong>Input:</strong> palindrome = "a" <strong>Output:</strong> "" <strong>Explanation:</strong> 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.
Solution
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
class Solution { //test cases //aaaa -> aaab //abba -> aaba //aba -> abb, b cannot be replaced with a it will still be palindrome //acbca -> 5/2 -> 2 -> check 0 and 1 index see if you can replace a character there public String breakPalindrome(String palindrome) { int l = palindrome.length(); if ( l==1){ return ""; } char[] arr = palindrome.toCharArray(); for(int i=0;i<l/2;i++){ if(arr[i]!='a'){ arr[i] = 'a'; return new String(arr); } } arr[arr.length-1] = 'b'; return new String(arr); } } |
Time Complexity
O(n), where n is the number of characters in a string
Space Complexity
O(n), where n is the number of characters in a string