题目链接: http://acm.sdut.edu.cn/sdutoj/problem.php?action=showproblem&problemid=3437
排序算法
Time Limit: 300ms Memory limit: 65536K 有疑问?点这里^_^
题目描述
这是一个简单的排序题!
题面也很简单!
给你一个字符串(保证只包含a~z),把其中的字母按照字母顺序排序!
是不是很简单!
我想你已经迫不及待了吧!
Accept it!
题面也很简单!
给你一个字符串(保证只包含a~z),把其中的字母按照字母顺序排序!
是不是很简单!
我想你已经迫不及待了吧!
Accept it!
输入
多组输入,(约100组),处理到文件结束
每组只有一行,包含一个字符串S(|S| < = 10000000),保证只含有a到z的字符
输出
每组输入输出排序好的字符串
示例输入
zba
示例输出
abz
提示
来源
QAsQ
恩 我不会告诉你这题是得用哈希加桶排的 QAQ
好吧 既然你知道了,那我也不多说了,当初做的时候我连哈希都不知道,这道水题硬是白白没有A掉
首先解释一下300ms时间限制的由来
- #include <cstdio>
- #include <cstring>
- #include <algorithm>
- using namespace std;
- char s[10000005];
- int cmp(const void *a, const void *b)
- {
- return *(char *)a-*(char *)b;
- }
- int main()
- {
- while(~scanf("%s", s))
- {
- qsort(s,strlen(s),sizeof(s[0]),cmp);
- printf("%s\n", s);
- }
- return 0;
- }
1481819 | | 3437 | Time Limit Exceeded | 310ms | 0KB | g++ | 336B | 2016-05-06 22:41:53 |
下面是真正的代码
- #include <bits/stdc++.h>
- char s[10000005];
- int a[26];
- using namespace std;
- int main()
- {
- while(~scanf("%s", s))
- {
- memset(a,0,sizeof(a));
- int n=strlen(s);
- for(int i=0;i<n;i++)
- a[s[i]-'a']++;
- for(int i=0;i<26;i++)
- for(int j=1;j<=a[i];j++)
- printf("%c", 'a'+i);
- printf("\n");
- }
- return 0;
- }