题解 | 交换到最大-Java

交换到最大

https://www.nowcoder.com/practice/73fd35bbfaa5483d8aa8b03cd27887a8

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        int n = in.nextInt();
        in.nextLine(); // 处理换行符
        
        while (n-- > 0) {
            // 读取字符串并转为整数数组
            char[] chars = in.nextLine().toCharArray();
            int[] s = new int[chars.length];
            for (int i = 0; i < chars.length; i++) {
                s[i] = chars[i] - '0';
            }

            boolean flag = true;
            // 循环执行操作直到无法继续
            while (flag) {
                flag = false;
                // 从右向左执行一轮操作
                for (int i = s.length - 1; i > 0; i--) {
                    // 满足差值≥2时交换并减1
                    if (s[i] - s[i - 1] >= 2) {
                        int tmp = s[i];
                        s[i] = s[i - 1];
                        s[i - 1] = tmp - 1;
                    }
                }
                // 检查是否还能操作
                for (int i = s.length - 1; i > 0; i--) {
                    if (s[i] - s[i - 1] >= 2) {
                        flag = true;
                        break;
                    }
                }
            }
            
            // 输出结果
            for (int i : s) {
                System.out.print(i);
            }
            System.out.println();
        }
    }
}

全部评论

相关推荐

2025-12-15 11:27
门头沟学院 Java
哇哇的菜鸡oc:所有人不要理会,就好了,后面他就知道怎么回事了,只能说有的时候市场都是被宰的人搞坏的
点赞 评论 收藏
分享
评论
4
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务