首页 > 试题广场 >

字符串排序

[编程题]字符串排序
  • 热度指数:11987 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 64M,其他语言128M
  • 算法知识视频讲解
 输入一个长度不超过20的字符串,对所输入的字符串,按照ASCII码的大小从小到大进行排序,请输出排序后的结果

输入描述:
 一个字符串,其长度n<=20


输出描述:
 输入样例可能有多组,对于每组测试样例,
按照ASCII码的大小对输入的字符串从小到大进行排序,输出排序后的结果
示例1

输入

dcba

输出

abcd
import java.util.*;
public class Main{
    public static void main (String args[]){
        Scanner sc =  new Scanner(System.in);
        char[] chars = sc.next().toCharArray();
        Arrays.sort(chars);
        System.out.println(new String(chars));
    }
}

发表于 2020-06-28 22:16:09 回复(0)
java快速排序,记录一下
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;
    }
}


发表于 2020-03-24 22:20:22 回复(0)
Java 
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);
        }
    }
}


发表于 2020-03-06 16:08:50 回复(0)
public String sortString(String str) {
        char[] chars = str.toCharArray();  //转换char数组
        Arrays.sort(chars);  //排序
        return new String(chars);
    }
发表于 2019-03-20 11:04:30 回复(0)
//利用Arrays的sort方法,可以直接进行升序排列
import java.util.Arrays;
import java.util.Scanner;
public class Main
{
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        while(sc.hasNext()){
            String s = sc.nextLine();
            char[] arr = s.toCharArray();
            Arrays.sort(arr);
            for(int i=0; i<arr.length; i++)
            {
                System.out.print(arr[i]);
            }
        }
    }
}
发表于 2018-05-29 10:42:17 回复(0)

运行时间: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]);
            }
        }
    }

}
发表于 2018-04-15 15:52:49 回复(0)