題目描述
如果統計的個數相同,則按照ASCII碼由小到大排序輸出 。如果有其他字符,則對這些字符不用進行統計。
實現以下接口:
輸入一個字符串,對字符中的各個英文字符,數字,空格進行統計(可反復調用)
按照統計個數由多到少輸出統計結果,如果統計的個數相同,則按照ASII碼由小到大排序輸出
清空目前的統計結果,重新統計
調用者會保證:
輸入的字符串以‘\0’結尾。
輸入描述:
輸入一串字符。
輸出描述:
對字符中的
各個英文字符(大小寫分開統計),數字,空格進行統計,並按照統計個數由多到少輸出,如果統計的個數相同,則按照ASII碼由小到大排序輸出 。如果有其他字符,則對這些字符不用進行統計。
輸出
復制dca
思路:
ASII一共128個字符
#include <iostream>
#include <algorithm>
#include <string>
#include <stdlib.h>
using namespace std;
int main()
{
string st;
while (getline(cin, st))
{
int a[128] = { 0 }, i, j, b[128] = { 0 };
for (i = 0; i < st.length(); ++i)
{
a[st[i]]++;
b[st[i]]++;
}
sort(a, a + 128);
sort(st.begin(), st.end());
for (i = 127; i >= 0; --i)
{
if (a[i] == 0)break;
for (j = 0; j < st.length(); ++j)
{
if (b[st[j]] == a[i])
{
cout << st[j];
b[st[j]] = 0;
break;
}
}
}
cout << endl;
}
return 0;
}
參考討論解析