最小字典序问题java版

本文介绍了一种使用贪心算法解决字典序最小问题的方法。通过从输入字符串的头部或尾部选择合适的字符,逐步构建出字典序最小的字符串。文章提供了完整的Java实现代码,包括读取输入字符串并将其转换为字符数组,然后通过比较来确定每次应添加的字符。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  例 输入  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();
    }
}

 

转载于:https://www.cnblogs.com/sylzs/p/10699080.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值