我的代码有什么错误?
给定一个由小写字母组成的字符串,将其所有字母按升序排列。
输入:输入的第一行包含t,表示测试用例的数量。然后遵循每个测试用例的描述。testcase的第一行包含表示字符串长度的正整数n。第二行包含字符串。
输出:对于每个testcase,输出排序的字符串。
约束条件:
1 <= T <= 100
1 <= N <= 100
import java.util.*;
class GFG {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int t = sc.nextInt();
for (int i = 1; i <= t; i++) {
int n = sc.nextInt();
sc.nextLine();
String S = sc.nextLine();
String sor = "";
for (int j = 0; j < n; j++) {
int min = j;
for (int k = j + 1; k < n; k++) {
if (S.charAt(k) > S.charAt(min)) {
min = k;
}
}
sor += S.substring(min, min + 1);
}
System.out.println(sor);
}
}
}
输入:
1
5
edcab
输出:
edcbb
预期产量:
abcde
3条答案
按热度按时间avwztpqn1#
这个代码做你想做的。我将>改为<,并从未排序的字符串中删除了添加到已排序字符串的每个字符。这样我们就不需要一次又一次地处理同一个字符。
fhg3lkii2#
你可以用
String.toCharArray
方法对字符数组进行迭代char[]
对于此字符串,对其十进制值进行排序,并返回包含排序数组的字符的字符串:你可以用
String.codePoints
方法进行迭代int
此字符串的字符值,对其排序并收集另一个排序的字符串:另请参见:
•如何在密码验证中不使用特殊字符(没有regex)?
•java选择排序
6qftjkof3#
你不能交换房间的位置
min
找到它之后的角色。但是String
java中的字符是不可变的,因此不能交换其中字符的位置。我建议你把你的字符串转换成char[]
以便可以交换字符: