我的代码中有什么错误?
给定一个由小写字母组成的字符串,请按升序排列其所有字母。
输入:输入的第一行包含T,表示测试用例的数量。然后是每个测试用例的描述。测试用例的第一行包含表示字符串长度的正整数N。第二行包含字符串。
输出:对于每个测试用例,输出排序后的字符串。
约束条件:
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
您可以使用字符串。toCharArray方法迭代此字符串的字符数组,对其十进制值进行排序,并返回包含已排序数组的字符的字符串:
public static void main(String[] args) {
String str = "edcab";
String sorted = selectionSort(str.toCharArray());
System.out.println(sorted); // abcde
}
public static String selectionSort(char[] arr) {
// iterate over all subsets of the array
// (0-last, 1-last, 2-last, 3-last, ...)
for (int i = 0; i < arr.length; i++) {
// assume the min is
// the first element
char min = arr[i];
// index of the
// min element
int min_i = i;
// check the elements
// after i to find
// the smallest
for (int j = i + 1; j < arr.length; j++) {
// if this element
// is less, then it
// is the new min
if (arr[j] < min) {
min = arr[j];
min_i = j;
}
}
// if min element is not
// equal to the current
// one, then swap them
if (i != min_i) {
char temp = arr[i];
arr[i] = arr[min_i];
arr[min_i] = temp;
}
}
return String.valueOf(arr);
}
您可以使用字符串。codePoints方法迭代此字符串中字符的值,对其排序并收集另一个排序的字符串:
String str = "edcab";
String sorted = str.codePoints()
.sorted()
.mapToObj(Character::toString)
.collect(Collectors.joining());
System.out.println(sorted); // abcde
另请参见:
如何在密码验证中不使用特殊字符(没有Regex)
•Java选择排序
找到min
字符后,您不会交换它的位置。但是java中的String
是不可变的,因此您无法交换字符在其中的位置。我建议您将String转换为char[]
以便您可以交换字符:
java prettyprint-override">
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().toCharArray(); // convert it to char array
char[] sor = new char[S.length];
for(int j=0; j<n; j++){
int min = j;
for(int k =j+1; k<n; k++){
if(S[k]<S[min]){
min = k;
}
}
swap(S, min, j);
sor[j] = S[min]
}
System.out.println(new String(sor));// reconvert to string
}
}
public static void swap(char[] c,int x,int y){
char temp= c[x];
c[x] = c[y];
c[y] = temp;
}
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();
System.out.println("S: "+S);
String sor = "";
for (int j = 0; n > 0; j++) {
int min = 0;
for (int k = 0; k < n; k++) {
if (S.charAt(k) < S.charAt(min)) {
min = k;
}
}
sor += S.substring(min, min + 1);
S = S.substring(0, min) + S.substring(min + 1);
n--;
}
System.out.println(sor);
}
}
}
此代码满足您的要求。我改变了
本文向大家介绍JAVA使用TreeMap对字符串进行排序,包括了JAVA使用TreeMap对字符串进行排序的使用技巧和注意事项,需要的朋友参考一下 这篇文章主要介绍了JAVA使用TreeMap对字符串进行排序,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 题目要求: 给出一个字符串:fjdjskgfhbsjkgjnsrgnaHNGKEURHGAS
我正在尝试编写一个程序,根据列表中最不频繁的字符排列字符串列表。例如,如果列表是,列表中的字母频率将是a-5,n-3,p-2,e-2,l-1,o-1,r-1,g-1,b-1。由于橙色包含最不频繁的字母,程序将返回橙色,然后是apple,然后是banana。 到目前为止,我已经编写了按频率排列列表中所有字母的代码。但我需要应用它来找出哪个字符串包含最不频繁的字母。 这是我的代码:
问题内容: 我有一个包含多个数组的数组,我想根据这些数组中的某个字符串对数组进行排序。 如何按名称排序,以便 阿尔伯特排 在首位, 齐默尔曼排 在最后? 我知道如果可以使用整数进行排序,但是字符串使我毫无头绪,该怎么办。 谢谢您帮忙!:) 问题答案: 这可以通过将支持函数作为参数传递给方法调用来实现。 像这样:
本文向大家介绍Python对字符串列表进行排序,包括了Python对字符串列表进行排序的使用技巧和注意事项,需要的朋友参考一下 在本教程中,我们将看到如何对字符串列表进行排序。我们将使用sort方法和sorted函数对给定的字符串列表进行排序。然后,我们将了解如何根据不同的条件(例如长度,值等)对字符串列表进行排序, 让我们看看如何使用list.sort方法对字符串列表进行排序。排序方法列表是一个
本文向大家介绍Swift对字符串数组进行排序,包括了Swift对字符串数组进行排序的使用技巧和注意事项,需要的朋友参考一下 例子 3.0 最简单的方法是使用sorted(): 或者 sort() 您可以将闭包作为排序参数: 尾随闭包的替代语法: 但是,如果数组中的元素不一致,则会出现意外结果: 要解决此问题,请对元素的小写版本进行排序: 或者import Foundation使用NSString的
问题内容: 我在排序包含整数的字符串时遇到问题。如果使用下面的代码,我将进行排序:1some,2some,20some,21some,3some,一些 但是我希望将其排序为:1some,2some,3some,20some,21some,一些 我怎样才能做到这一点? 谢谢! 问题答案: 这是有关如何执行此操作的独立示例(未特别优化): 输出量 说明 该示例使用一个常数来推断数字是否位于的起始位置。