题目链接
分析
对于长度为 $1$ 的串来说,必定为回文串,直接返回空串即可
对于其余回文串来说,找到第一个不等于 $a$ 的字母修改为 $a$ 时字典序最小
如果回文串除中心外出现全是 $a$ 的情况,将最后一位修改为 $b$ 时字典序最小
代码实现
class Solution {
public:
string breakPalindrome(string palindrome) {
int n = palindrome.size();
if(n == 1)
return "";
for(int i = 0; i < n >> 1; ++i) {
if(palindrome[i] != 'a') {
palindrome[i] = 'a';
return palindrome;
}
}
palindrome[n - 1] = 'b';
return palindrome;
}
};
复杂度分析
- 时间复杂度:$O(n)$
- 空间复杂度:$O(1)$