最小字典序问题java版

  例 输入  6  ACDBCB  

  输出   ABCBCD

package greedy;

import java.util.Scanner;

/**
 * 贪心算法第一个。字典序最小问题
 * 从S的头或者尾取出一个元素插入到T空的尾部使得T的字典序最小
 * 输入一个整数代表字符串的长度   输入一个字符串;
 * 输出 正确的排序
 */
public class Greedy01 {
    public static void main(String[] args) {
        int sum;//字符串的长度
        Scanner sca=new Scanner(System.in);
//        sum=sca.nextInt();
        sum=6;
        char  []array=new char[sum];
        String str=sca.next();
        array=str.toCharArray();//获取到字符串T并且转化为数组
        int a=0; int b=sum-1;
        while(a<=b){
            boolean left=false;
            for(int i=0 ;a+i<=b;i++){
                if(array[a+i]<array[b-i]){
                    left=true;
                    break;
                }
                if (array[a + i] > array[b-i]) {
                    left=false;
                    break;
                }
            }
            if (left) System.out.print(array[a++]);
                else System.out.print(array[b--]);
        }
        System.out.println();
    }
}

猜你喜欢

转载自www.cnblogs.com/sylzs/p/10699080.html
今日推荐