計蒜客 結果填空:字符串操作

題目連接

題意:

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章