题目描述:
有一个字符串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]); } }