问题描述
本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。
小蓝要把一个字符串中的字母按其在字母表中的顺序排列。
例如,LANQIAO 排列后为 AAILNOQ。
又如,GOODGOODSTUDYDAYDAYUP 排列后为 AADDDDDGGOOOOPSTUUYYY。
请问对于以下字符串,排列之后字符串是什么?
WHERETHEREISAWILLTHEREISAWAY
题目输入的每个都是大写的字母。先创建一个数组a存储只使用a[1]到a[26]把每个字符串中大写的字母对应ASCII码值-‘A’,得到对应是第k个大写的字母,每次遍历到第k个字母,都将a[k]数组+1.遍历完后。再从a[1]遍历到a[26],比如说a[3]=2,意思是c的个数为2,判断到a[k]不等于0,都将a[k]第k个字母输出,然后a[k]--。
#include<iostream>
#include<bits/stdc++.h>
using namespace std;
int main()
{
string str;
int a[50]={0};
cin>>str;
for(int i=0;i<str.length();i++)
{
a[str[i]-'A'+1]++;
}
for(int i=1;i<27;i++)
{
while(a[i]!=0)
{
printf("%c",'A'+i-1);
a[i]--;
}
}
cout<<endl;
}