1328. Break a Palindrome**
https://leetcode.com/problems/break-a-palindrome/
题目描述
Given a palindromic string palindrome
, replace exactly one character by any lowercase English letter so that the string becomes the lexicographically smallest possible string that isn’t a palindrome.
After doing so, return the final string. If there is no way to do so, return the empty string.
Example 1:
Input: palindrome = "abccba"
Output: "aaccba"
Example 2:
Input: palindrome = "a"
Output: ""
Constraints:
1 <= palindrome.length <= 1000
palindrome
consists of only lowercase English letters.
C++ 实现 1
找规律. 由于输入是回文串, 那么只需要遍历前一半的字符, 如果遇到等于 'a'
的, 便将该字符替换为 'a'
直接返回. 如果前一半的字符都是 'a'
, 比如:
aaaa # 例子 1
aabaa # 例子 2
只需要将最后一个字符替换为 'b'
即可.
class Solution {
public:
string breakPalindrome(string palindrome) {
int n = palindrome.size();
if (n == 1) return "";
for (int i = 0; i < n / 2; ++ i) {
if (palindrome[i] != 'a') {
palindrome[i] = 'a';
return palindrome;
}
}
palindrome.back() = 'b';
return palindrome;
}
};