题目描述
Lily上课时使用字母数字图片教小朋友们学习英语单词,每次都需要把这些图片按照大小(ASCII码值从小到大)排列收好。请大家给Lily帮忙,通过C语言解决。
输入描述:
Lily使用的图片包括"A"到"Z"、"a"到"z"、"0"到"9"。输入字母或数字个数不超过1024。
输出描述:
Lily的所有图片按照从小到大的顺序输出
示例1
输入
Ihave1nose2hands10fingers
输出
0112Iaadeeefghhinnnorsssv
分析:定义一个128(ASCII为0~127)的数组,初始化为0,记录出现字符的个数,然后按顺序输出字符。
#include <iostream>
#include <vector>
#include<string>
using namespace std;
int main(){
string s;
while (cin >> s){
vector<int> temp(128, 0);
int i = 0;
while (i < s.size()){
if (s[i] >= 'a'&&s[i] <= 'z' || s[i] >= 'A'&&s[i] <= 'Z' || s[i] >= '0'&&s[i] <= '9')
temp[s[i++]]++;
else ++i;
}
int j = 0;
while(j < temp.size()){
if (temp[j] == 1) cout << char(j++);
else if (temp[j]>1) {
cout << char(j); temp[j]--;
}
else ++j;
}
cout << endl;
}
return 0;
}