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 <= 1000palindromeconsists 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;
}
};
本文探讨了如何将一个回文字符串通过替换一个字符变为字典序最小的非回文串,介绍了具体算法思路和C++实现代码。适用于对字符串操作和算法优化感兴趣的读者。

320

被折叠的 条评论
为什么被折叠?



