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