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]);
}
}
}
}