題目連接
題意:
給你一串字符串,現在你可以對它進行操作。
你可以刪去除’‘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;
}