文章

13

粉丝

120

获赞

4

访问

15.2k

头像
字母排序 题解:
P2019
发布于2023年6月21日 18:58
阅读数 1.4k

统计次数来进行排序 z的ascii码为122

struct Node
{
	char a;
	int cnt;
	bool operator < (Node &w){
		if(cnt == w.cnt){
			return a < w.a;
		}
		return cnt > w.cnt;  
	}
}node[123];

多组输入数据,每一组数据处理完之后别忘了清空

for(int i = 0;i < 123;i++)
{
    node[i].cnt = 0;
}

完整代码

#include<bits/stdc++.h>
using namespace std;
struct Node
{
	char a;
	int cnt;
	bool operator < (Node &w){
		if(cnt == w.cnt){
			return a < w.a;
		}
		return cnt > w.cnt;  
	}
}node[123];
int main()
{
	string s;
	while(cin >> s)
	{
		for(int i = 0;i < 123;i++)
		{
			node[i].a = char(i);
		}
		for(auto x:s)
		{
			node[int(x)].cnt++;
		}
		sort(node,node+123);
		for(int i = 0;i < 123;i++)
		{
			while(node[i].cnt--)
			{
				cout << node[i].a;
			}
		}
		cout << '\n';
		for(int i = 0;i < 123;i++)
		{
			node[i].cnt = 0;
		}
	}
	return 0;
}

 

登录查看完整内容


登录后发布评论

暂无评论,来抢沙发