LeetCode 1328. Break a Palindrome
原题链接
中等
作者:
孤独时代的罗永浩
,
2020-10-16 05:29:29
,
所有人可见
,
阅读 607
贪心 $O(13n)$
外层从a开始枚举, 内层枚举字符串的前半部分,如果第一次出现了两者不等的情况,
比较两个结果: 结果一在当前位置用该字符替换原来字符, 结果二在回文串后半部分对应位置替换字符
返回两者更小的那个
C++ 代码
class Solution {
public:
string breakPalindrome(string p) {
if(p.size() <= 1) return "";
int pos = p.size() / 2 - 1;
for(int i = 0; i < 26; i++)
{
char now = 'a' + i;
for(int j = 0; j <= pos; j++)
if(p[j] != now)
{
string temp1 = p, temp2 = p;
temp1[j] = now;
temp2[p.size() - 1 - j] = now;
return min(temp1, temp2);
}
}
return "";
}
};