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;
}
沒有留言:
張貼留言