题解 | #字符统计#

字符统计

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]<<" ";
} 


全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务