题目描述:
1050. 字符排序 - 程序设计能力实训 - ECNU Online Judgehttps://acm.ecnu.edu.cn/contest/43/problem/1050/【题目难度:Medium】
提示:开两个数组,一个存读入的字符串(s),一个存这个字符串中的字母(letter),再将lettter排序后,放回s中原本是字母的地方。
AC代码:
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cmath>
#include <cstring>
using namespace std;
int main(){
int T;
cin>>T;
getchar();//把换行符读掉
char s[249];
char letter[249];
int n,nLetter;
char ch;
for(int t=0;t<T;t++){
nLetter=0;//记得初始化
//读入数据
cin.getline(s,249);
//将字符串中的字母存进另一个数组letter
n=strlen(s);
for(int i=0;i<n;i++){
if(s[i]>='A' && s[i]<='Z'){
letter[nLetter]=s[i];
nLetter++;
}
}
//给存字母的数组排序
sort(letter,letter+nLetter);
//排好序后放回去
int k=0;
for(int i=0;i<n;i++){
if(s[i]>='A' && s[i]<='Z'){
s[i]=letter[k];
k++;
}
}
//输出
printf("case #%d:\n",t);
for(int i=0;i<n;i++){
cout<<s[i];
}
cout<<endl;
}
}