SDUT 3437 排序算法

题目链接: http://acm.sdut.edu.cn/sdutoj/problem.php?action=showproblem&problemid=3437

排序算法

Time Limit: 300ms   Memory limit: 65536K  有疑问?点这里^_^

题目描述

这是一个简单的排序题!
题面也很简单!
给你一个字符串(保证只包含a~z),把其中的字母按照字母顺序排序!
是不是很简单!
我想你已经迫不及待了吧!
Accept it!

输入

多组输入,(约100组),处理到文件结束
每组只有一行,包含一个字符串S(|S| < = 10000000),保证只含有a到z的字符 

输出

每组输入输出排序好的字符串

示例输入

zba

示例输出

abz

提示

 

来源

QAsQ
恩 我不会告诉你这题是得用哈希加桶排的 QAQ
好吧 既然你知道了,那我也不多说了,当初做的时候我连哈希都不知道,这道水题硬是白白没有A掉
首先解释一下300ms时间限制的由来
  1. #include <cstdio>  
  2. #include <cstring>  
  3. #include <algorithm>  
  4. using namespace std;  
  5. char s[10000005];  
  6. int cmp(const void *a, const void *b)  
  7. {  
  8.     return *(char *)a-*(char *)b;  
  9. }  
  10. int main()  
  11. {  
  12.     while(~scanf("%s", s))  
  13.     {  
  14.         qsort(s,strlen(s),sizeof(s[0]),cmp);  
  15.         printf("%s\n", s);  
  16.     }  
  17.     return 0;  
  18. }  
结果是。。
1481819
3437 Time Limit Exceeded 310ms 0KB g++ 336B 2016-05-06 22:41:53
出题人应该是预料到会有人用qsort对字符串排序了233
下面是真正的代码
  1. #include <bits/stdc++.h>  
  2. char s[10000005];  
  3. int a[26];  
  4. using namespace std;  
  5. int main()  
  6. {  
  7.     while(~scanf("%s", s))  
  8.     {  
  9.         memset(a,0,sizeof(a));  
  10.         int n=strlen(s);  
  11.         for(int i=0;i<n;i++)  
  12.             a[s[i]-'a']++;  
  13.         for(int i=0;i<26;i++)  
  14.             for(int j=1;j<=a[i];j++)  
  15.             printf("%c"'a'+i);  
  16.         printf("\n");  
  17.     }  
  18.     return 0;  
  19. }  

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值