2020年7月14日 星期二

10062 - Tell me the frequencies!

解題思路:
ascii code總共有128個,對應值為0~127,所以直接用長度為128的一維陣列紀錄出現次數即可。
再來是如何依照要求輸出。
因為每列最大長度為1000,所以單一值最大可能出現次數也是1000,那就從出現1次~1000次慢慢找,並且每次都從ascii最後面找(127~0)。
這樣做比較方便,不用煩惱怎麼排序,反正就次數由少到多、ascii值由大到小輸出。

程式碼:
#include <iostream>
#include <string>
using namespace std;

int main()
{
    string s;
    while(getline(cin,s))
    {
        int count[128]={0};
        for(int i=0;i<s.size();i++)
            count[s[i]]++;
        for(int i=1;i<=1000;i++)
        {
            for(int j=127;j>=0;j--)
            {
                if(count[j]==i)
                    cout<<j<<" "<<i<<endl;
            }
        }
        cout<<endl;
    }
    return 0;
}

沒有留言:

張貼留言