ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

回文构造

2026/8/3 23:55:30 拓冰建站 浏览量
回文构造

lc

lc2384

hash+贪心

trick: 对于回文串,可以先构造做左半部分,然后添加对称的右半部分来降低编码难度。

先统计数字出现次数

把非零大数字的偶数次半数拼左半部分,有非零左半才加零的偶数次半数

再塞一个最大奇数次数字当中间

最后镜像左半拼出最大回文数

class Solution {
public:
string largestPalindromic(string s) {
int cnt[10];memset(cnt,0,sizeof cnt);
for(char c:s)cnt[c-'0']++;
int n=s.size();

if(cnt[0]==n)return "0";
string left;

for(int i=9;i>0;--i){
for(int j=0;j<cnt[i]/2;j++)
left+='0'+i;
}
// 只有左边添加了大于'0'的数字才能在中间添加偶数个'0'
if(left.size()){
for(int j=0;j<cnt[0]/2;++j)
left+='0';
}

int j=left.size()-1;
// 奇数的最大一个数字
for(int i=9;i>=0;i--)
if(cnt[i]&1){
left+='0'+i;
break;
}
// 将右半部分补齐
for(;j>=0;j--){
left+=left[j];
}
return left;
}
};