题目描述:
有一个字符串s,s中有n个字符,只可能是小写字母和数字组成,请将字符串的字母按照英文字典字母顺序排列,数字按从小到大排列,排序后的字符串疮毒与原字符串长度相同,但原位置的字符种类不能变更,如果原位置是数字仍是数字,原位置是字符串仍是字符串,如输入:hgfgfaada653234xx2de 输出:aaadddeffg223345gh6xx
输入描述:
输入一个数字T,表示有T组测试数据,对于每组测试数据,输入一个正整数n,表示字符串的长度,然后再输入字符串。
输出描述:
输出T行,每行按题目要求输出排序后的字符串。(第T行输出不要有换行符,会导致输出T+1行空格)
代码:
import java.util.*;
public class Solution {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int T = Integer.parseInt(sc.nextLine());
String[] r = new String[T];
for(int k = 0; k < T; k++){
int n = Integer.parseInt(sc.nextLine());
String s = sc.nextLine();
String res = "";
char[] ar = s.toCharArray();
Arrays.sort(ar);
int strIndex = 0;
int numIndex = 0;
for(int i = 0; i < n; i++){
if((int)ar[i] >= 97){
strIndex = i;
break;
}
}
for(int i = 0; i < n; i++){
if(s.charAt(i)<97){
res += ar[numIndex];
numIndex++;
}else{
res += ar[strIndex];
strIndex++;
}
}
r[k] = res;
}
for(int i = 0; i < T-1; i++){
System.out.println(r[i]);
}
System.out.print(r[T-1]);
}
}