驻马店网站建设价格,wordpress 下载路径加密,符合网络营销的网站,游戏网站排行榜前十名链接#xff1a;
2663. 字典序最小的美丽字符串
题意
略
解#xff1a;
要求字符串内不存在任何长度为 2 或更长的回文子字符串#xff0c;则在任意位置不存在aa或aba形式
由于要被给定字符串字典序大#xff0c;且找到符合条件的字典序最小字符串#xff0c;则竟可…链接
2663. 字典序最小的美丽字符串
题意
略
解
要求字符串内不存在任何长度为 2 或更长的回文子字符串则在任意位置不存在aa或aba形式
由于要被给定字符串字典序大且找到符合条件的字典序最小字符串则竟可能对靠后的字符做加法和进位
莽一波一直处理最后一个字符寄的理所当然哈哈
因为默认给的是符合无回文的字符串所以没被更改过的字符都不考虑从最靠前的被修改过的字符开始判断它和前面是否构成回文如果回文则字符加一如不回文则处理靠后的字符。
代码很丑陋看看注释得了
实际代码
#includebits/stdc.h
using namespace std;
string smallestBeautifulString(string s, int k)
{int lgs.length(),maolg-1,zt1;while(true){if(zt)//第一次无条件执行 {s[mao];}if(mao1){if(s[mao]s[mao-1] || s[mao]s[mao-2]){while(s[mao]s[mao-1] || s[mao]s[mao-2]) s[mao];//有回文则}else if(!zt) mao;//无回文则处理后面的字符}else if(mao0){if(s[mao]s[mao-1]){while(s[mao]s[mao-1]) s[mao];}else if(!zt) mao;}else if(!zt) mao;if(zt) zt0;//coutmao:maoendl; if(maolg) break;//couts[mao]:s[mao]endl; while(s[mao]-a1k)//进位则需要处理新的字符{s[mao]-k;mao--;if(mao0) return ;//首字符还进位则无符合条件字符串else s[mao];}}return s;
}
int main()
{string s;int k;cinsk;string anssmallestBeautifulString(s,k);coutansendl;return 0;
}限制
1 n s.length 1054 k 26s 是一个美丽字符串