​​题目连接​​

题意:

给你一串字符串,现在你可以对它进行操作。
你可以删去除’‘zz’'之外的连着的字符。并获得连着字符的下一位。
让你求如何操作使最后获得的字符字典序最大。
aaaa -> bb -> c

题解:

1.我们可以预先统计每个字符的个数,然后计算经过’进位‘(二得一)能获得得字符总个数。
最后按统计得每个字符得数量输出即可。
2.也可以直接手算。(考场建议)

#include<bits/stdc++.h>
using namespace std;
int cnt[1005];
string s;
int main()
{
cin >> s;
int n = s.size();
for(int i = 0;i < n;i++)
{
cnt[s[i] - 'a']++;//统计每个字母出现的次数
}
for(int i = 0;i < 25;i++)
{
cnt[i + 1] += cnt[i] / 2;///记录低位能向高位转几个字符
cnt[i] %= 2;///计算剩余底位个数
}
for(int i = 25;i >= 0;i--)
{
for(int j = 0;j < cnt[i];j++)
{
cout << (char)(i + 'a');
}
}
cout << endl;
return 0;
}