重排序

重排序

输入一个8位有效数字和指定剔除的位数,将剩余数字从大到小排序打印。若输入内容不是数字或者超过有效位数,返回"error"。

import java.util.*;
import static java.util.Collections.reverse;
public class Main {
    public static java.lang.String input(){
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入一个8位数的数字:");
        String str = null;
        int n = 0;
        if(scanner.hasNextInt()){
            int number = scanner.nextInt();
            n = scanner.nextInt();
            str = String.valueOf(number);
            if(str.length()<8||str.length()>8){
                return "error";
            }
        }else {
            return "error";
        }
        return rSort(str,n);
    }

    private static java.lang.String rSort(String str, int n) {
        String str1 = str.substring(0,n-1)+str.substring(n);
        char[] char1 = str1.toCharArray();
        charsQuickSort(char1,0,char1.length-1);
        List list = new ArrayList();
        for(int i = 0;i<char1.length;i++){
                list.add(char1[i]);
        }
        reverse(list);
        StringBuilder sb = new StringBuilder();
        for(int i = 0;i<list.size();i++){
            sb.append(list.get(i));
        }
        return sb.toString();
    }
    public static int charsPartition(char[] a, int left, int right){
        int l,r;
        char temp;
        l=left;
        r=right;
        temp=a[l];            //首元素作为分界值
        while(l<r){
            while(a[r]>temp&&l<r)
                r--;
            if(l<r){
                a[l]=a[r];
                l++;
            }
            while(a[l]<temp&&l<r)
                l++;
            if(l<r){
                a[r]=a[l];
                r--;
            }
        }
        a[l]=temp;
        return l;
    }
    //字符串排序的快速排序算法
    public static void charsQuickSort(char[] a, int left, int right){
        int p;
        if(left<right){
            p = charsPartition(a,left,right);
            charsQuickSort(a,left,p-1);
            charsQuickSort(a,p+1,right);
        }
    }
    public static void main(String[] args) {
        System.out.println(input());
    }
}
全部评论

相关推荐

神哥了不得:神哥来啦~有可能只是为了注册账号,这个平台必须发一个招聘才能注册成功的
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务