题解 | #字符统计#
字符统计
http://www.nowcoder.com/practice/c1f9561de1e240099bdb904765da9ad0
一维哈希
空间复杂度高但不用动脑
/*HJ102字符统计
输入一个只包含小写英文字母和数字的字符串,
按照不同字符统计个数由多到少输出统计结果,如
果统计的个数相同,则按照ASCII码由小到大排序输出。*/
#include <iostream>
using namespace std;
int main()
{
int a[75]={0};
string str;
string str1="";
char pp;
getline(cin,str);
int l=str.length();
for(int i=0;i<l;i++)
{
if(a[str[i]-'0']==0) str1+=str[i];//加入不重复元素
a[str[i]-'0']++;
}
for(int t=1;t<str1.length();t++)//冒泡排序
for(int j=0;j<str1.length()-t;j++)
{
if(a[str1[j]-'0']<a[str1[j+1]-'0'])//次数
{
pp=str1[j];str1[j]=str1[j+1];str1[j+1]=pp;
}
}
for(int t=1;t<str1.length();t++)//冒泡排序
for(int j=0;j<str1.length()-t;j++)
{
if(a[str1[j]-'0']==a[str1[j+1]-'0'])
{
if(str1[j]>str1[j+1]) //ASCII
{
pp=str1[j];str1[j]=str1[j+1];str1[j+1]=pp;
}
}
}
cout<<str1<<endl;
// for(int i=0;i<75;i++)
// cout<<a[i]<<" ";
}