import java.util.*; public class Main{ public static void main(String[] args){ Scanner sc=new Scanner(System.in); String str=sc.nextLine(); char[] s=str.toCharArray(); quicksort(s,0,s.length-1); String res=new String(s); System.out.print(res); } private static void quicksort(char[] sort,int left,int right){ if(left<right){ int mid=partition(sort,left,right); quicksort(sort,left,mid-1); quicksort(sort,mid+1,right); } } private static int partition(char[] sort,int left,int right){ char tmp=sort[left]; while(left<right){ while(left<right&&sort[right]>tmp){ right--; } if(left<right){ sort[left]=sort[right]; left++; } while(left<right&&sort[left]<tmp){ left++; } if(left<right){ sort[right]=sort[left]; right--; } } sort[left]=tmp; return left; } }
import java.util.Arrays; import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); char[] array = scanner.nextLine().toCharArray(); Arrays.sort(array); for (char c : array) { System.out.print(c); } } }
运行时间:45ms
占用内存:10712k
一开始自以为是的用TreeSet做(其实是想得太多想的复杂化了,用以下代码不是很简单的吗 也许效率会低一些)
发现通过率11%
哦原来测试用例中有重复字符
在输出时重复字符亦需要输出
然而Set是不允许有重复元素的。
finally, the code is:
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
while(scan.hasNext()) {
String str = scan.nextLine();
char[] arr = str.toCharArray();
for(int i = 0; i < arr.length - 1; i++) {
for(int j = i + 1; j < arr.length; j++) {
if(arr[i] > arr[j]) {
Character biggerOne = arr[i];
arr[i] = arr[j];
arr[j] = biggerOne;
}
}
}
for(int i = 0; i < arr.length; i++) {
System.out.print(arr[i]);
}
}
}
}