AcWing 5050. 排序 (每日一题)

题目描述

给定一个长度为 n 的由小写字母构成的字符串。

请你按照 a∼z 的顺序,对字符串内的字符进行重新排序,并输出重新排序后的字符串。

输入格式

第一行包含整数 T ,表示共有 T 组测试数据。

每组数据第一行包含整数 n 。

第二行包含一个长度为 n 的由小写字母构成的字符串。
输出格式
每组数据输出占一行,输出重新排序后的字符串。

数据范围
前 3个测试点满足 1≤T≤5,1≤n≤10。
所有测试点满足 1≤T≤100,1≤n≤200。

输入样例:
2
3
cba
3
acb

输出样例:
abc
abc

解题思路

先将字符转化为0-26对应的数字,再去维护一个数组sum,统计出不同类型的字符的个数,最后输出打印数字所对应的字符。

考点

字符转数字

char op = str.charAt(i);

数字转字符

(char)('a' + i); 

ACcode

import java.util.*;
public class Main{
public static void main(String []args){
    Scanner sc = new Scanner(System.in);
    int T = sc.nextInt();//T组测试数据
    while(T-- > 0){
        int n = sc.nextInt();
        String str = sc.next();
        int []sum = new int[26];
        for(int i = 0; i < n; i++){
            char ch = str.charAt(i);//获取每组测试数据的字符
            sum[ch - 'a']++;//每一种类型的字符共有多少个
        }
        for(int i = 0; i < 26; i++){//26个字母
            for(int j = 0; j < sum[i]; j++){//打印每种类型的字符
                System.out.print((char)('a' + i));
            }
        }
        System.out.println();
    }
}
}

你可能感兴趣的:(每日一题,蓝桥杯上岸,蓝桥杯,算法,java,leetcode,刷题,模拟,字符串)