华为机试-0002-[字符]组成最大数

文章目录

    • 题目描述
    • 完整代码
    • 代码解释

更多内容欢迎关注我(持续更新中,欢迎Star✨)

Github:CodeZeng1998/Java-Developer-Work-Note

技术公众号:CodeZeng1998(纯纯技术文)

生活公众号:好锅(Life is more than code)

其他平台:CodeZeng1998好锅

题目描述

【字符】组成最大数
任意输入一个自然数,输出该自然数的各位数字组成的最大数。

例如,输入 1593 ,则输出为 9531 。

输入:

自然数 n

输出:

各位数字组成的最大数

完整代码

import java.util.Scanner;

public class MaximumNumberOfCharacterCompositions {
    public static void main(String[] args) {

        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入一个数字字符串:");
        String numberStr = scanner.nextLine();
        scanner.close();

        char[] numberCharArray = numberStr.toCharArray();

        // 使用选择排序从大到小排序
        for (int i = 0; i < numberCharArray.length; i++) {
            int maxIndex = i;
            for (int j = i + 1; j < numberCharArray.length; j++) {
                if (numberCharArray[j] > numberCharArray[maxIndex]) {
                    maxIndex = j;
                }
            }
            // 交换最大值与当前值
            char tempChar = numberCharArray[i];
            numberCharArray[i] = numberCharArray[maxIndex];
            numberCharArray[maxIndex] = tempChar;
        }

        System.out.println(new String(numberCharArray));
    }
}

代码解释

ChatGPT:

这段Java代码的主要功能是将用户输入的数字字符串中的各个数字按从大到小的顺序重新排列,最终输出由这些数字组成的最大数。代码使用了选择排序算法来实现这一排序过程。以下是对这段代码的详细解释。

  • 首先,导入了java.util.Scanner,这是一个Java标准库,用于从控制台获取用户输入。

  • 主类MaximumNumberOfCharacterCompositions包含一个main方法,这是程序的入口点。当程序运行时,它会首先执行main方法中的代码。

  • 程序首先创建了一个Scanner对象,用于读取用户的输入。用户被提示输入一个数字字符串。这个输入通过scanner.nextLine()读取,并存储在一个名为numberStr的字符串变量中。读取完输入后,scanner.close()关闭了Scanner对象,以释放系统资源。

  • 接下来,字符串numberStr被转换成字符数组numberCharArray,这样可以逐个处理字符串中的每个字符。字符数组使得我们能够访问和操作字符串中的每一个数字。

  • 代码接下来的部分是选择排序的实现。选择排序通过在未排序部分中找到最大(或最小)值并将其与当前值交换来对数组进行排序。

    • 外层for循环遍历字符数组的每个元素,变量i表示当前要排序的位置。对于每个位置,代码假设当前位置的字符是最大值,并将其索引存储在maxIndex中。

    • 内层for循环从i+1开始,遍历数组剩余部分的元素。它逐一比较每个字符与当前假设的最大值(即位于maxIndex的字符)。如果发现比当前最大值更大的字符,maxIndex会更新为这个字符的新位置。

    • 内层循环结束后,代码会交换maxIndex位置的字符与当前位置i的字符,这样当前最大值就被放置在正确的排序位置。

  • 排序完成后,字符数组中的元素按从大到小的顺序排列。最后,程序将排序后的字符数组转换回字符串,并输出这个字符串。这个字符串就是由输入数字组成的最大数。

这段代码清晰地展示了选择排序算法的实现,并通过对数字字符串的排序,实现了按位生成最大数字的功能。

以上就是本文相关的所有内容了,如果发现有误欢迎评论指正,更多内容欢迎各位关注。

上图是由 Pic 生成的

关键词:Humans with a post apocalyptic style


更多内容欢迎关注我(持续更新中,欢迎Star✨)

Github:CodeZeng1998/Java-Developer-Work-Note

技术公众号:CodeZeng1998(纯纯技术文)

生活公众号:好锅(Life is more than code)

其他平台:CodeZeng1998好锅

你可能感兴趣的:(算法,华为,华为od,java,算法)