题目描述
Lily上课时使用字母数字图片教小朋友们学习英语单词,每次都需要把这些图片按照大小(ASCII码值从小到大)排列收好。请大家给Lily帮忙,通过C语言解决。
输入描述:
Lily使用的图片包括"A"到"Z"、"a"到"z"、"0"到"9"。输入字母或数字个数不超过1024。
输出描述:
Lily的所有图片按照从小到大的顺序输出
示例1
输入
Ihave1nose2hands10fingers
输出
0112Iaadeeefghhinnnorsssv
C++:
用<algorithm>库自带的sort函数
#include <iostream>
#include <algorithm>
using namespace std;
string sort(string);
int main()
{
string str;
while(cin >> str)
{
sort(str.begin(),str.end());
cout << str << endl;
}
return 0;
}
自己写sort函数:
#include <iostream>
using namespace std;
void sort(string &a);
int main()
{
string str;
while(cin >> str)
{
sort(str);
cout << str << endl;
}
return 0;
}
void sort(string &a)
{
int n = a.size();
for (int i = 0; i < n; i++)
{
for (int j = i + 1; j < n; j++)
{
if (a[i] > a[j])
{
int tmp = a[i];
a[i] = a[j];
a[j] = tmp;
}
}
}
return;
}
注意函数引用!!!
Python:
def sort(a):
if len(a) <= 1:
return a
else:
left = []
right = []
p = []
base = a[0]
for i in a:
if i < base:
left.append(i)
elif i > base:
right.append(i)
else:
p.append(i)
left = sort(left)
right = sort(right)
return left + p + right
while(1):
try:
print(''.join(sort(input())))
except:
break
python有自带的sort函数,我这里用了自己写的快排函数。注意要用循环,因为牛客网测试用例有多组,不写循环只能通过一组,会导致输出为空的问题。