You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何求解任意三位正整数数字排列后的最大整数?

问题描述

给定范围为 100≤n≤999 的任意三位正整数n,找出对其各位数字排列后能得到的最大整数。

原代码问题分析

提供的Java代码并未实现需求逻辑,它只是固定将十位、个位、百位数字按十位+个位+百位的顺序拼接,完全没有对数字进行排序处理。比如输入123时,原代码会输出231,但正确结果应该是321。

原代码如下:

public static int maxNum(int n) {
int j , k ,l, result;
String  q, z, y ,w;

    do {
        j = n % 10;
        k = n % 100/ 10;
        l = n % 1000 /100;

        q =Integer.toString(k);
        z =Integer.toString(j);
        y =Integer.toString(l);
        w= (q+z+y);
        result =Integer.parseInt(w);

        break;
    } while (n >=100 && n<=999);

    return result;
}
正确解法实现

核心思路是将三位数字按从大到小排序后拼接,以下是两种可行实现:

方式1:数字拆分后排序

public static int maxNum(int n) {
    // 拆分各位数字
    int digit1 = n / 100; // 百位
    int digit2 = (n / 10) % 10; // 十位
    int digit3 = n % 10; // 个位
    
    // 放入数组并从大到小排序
    int[] digits = {digit1, digit2, digit3};
    for (int i = 0; i < digits.length - 1; i++) {
        for (int j = 0; j < digits.length - 1 - i; j++) {
            if (digits[j] < digits[j + 1]) {
                int temp = digits[j];
                digits[j] = digits[j + 1];
                digits[j + 1] = temp;
            }
        }
    }
    
    // 拼接成最大整数
    return digits[0] * 100 + digits[1] * 10 + digits[2];
}

方式2:字符串处理排序

import java.util.Arrays;

public static int maxNum(int n) {
    // 转字符串后拆分为字符数组
    char[] digits = String.valueOf(n).toCharArray();
    // 默认升序排序后反转得到降序
    Arrays.sort(digits);
    reverse(digits);
    // 转回整数
    return Integer.parseInt(new String(digits));
}

// 辅助反转字符数组方法
private static void reverse(char[] arr) {
    int left = 0, right = arr.length - 1;
    while (left < right) {
        char temp = arr[left];
        arr[left] = arr[right];
        arr[right] = temp;
        left++;
        right--;
    }
}
输入输出示例
  • 输入:165 → 输出:651
  • 输入:123 → 输出:321

内容的提问来源于stack exchange,提问作者mohamed Osman

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 01:31:08