自学内容网 自学内容网

字节青训入营考核十五题-Java-小U的数字插入问题

问题

小U手中有两个数字 a 和 b。第一个数字是一个任意的正整数,而第二个数字是一个非负整数。她的任务是将第二个数字 b 插入到第一个数字 a 的某个位置,以形成一个最大的可能数字。

你需要帮助小U找到这个插入位置,输出插入后的最大结果。


测试样例

样例1:

输入:a = 76543, b = 4
输出:765443

样例2:

输入:a = 1, b = 0
输出:10

样例3:

输入:a = 44, b = 5
输出:544

样例4:

输入:a = 666, b = 6
输出:6666

思路

  • 数字转换为字符串

    • 由于数字需要逐位插入,我们将数字 aaa 和 bbb 转换为字符串,以便使用字符串操作实现插入。
  • 模拟插入

    • 遍历所有可能的插入位置(从字符串开头到结尾之后的每个位置)。
    • 在每个插入位置生成新的字符串,并将 bbb 插入到当前位置。
  • 比较大小

    • 维护一个变量存储目前最大的结果(初始化为空字符串)。
    • 每次生成新的字符串后,比较新字符串的数值是否比当前最大值大。如果大,则更新最大值。
  • 返回最大结果

    • 遍历完成后,将最终找到的最大结果转换为整数返回。

  • solution(76543, 4):

    • a = 76543, b = 4
    • 4 插入到 76543 的不同位置后,生成的数字为:476543, 746543, 764543, 765443, 765434
    • 最大值为 765443
  • solution(1, 0):

    • a = 1, b = 0
    • 0 插入到 1 的不同位置后,生成的数字为:01, 10
    • 最大值为 10
  • solution(44, 5):

    • a = 44, b = 5
    • 5 插入到 44 的不同位置后,生成的数字为:545, 454
    • 最大值为 545
  • solution(666, 6):

    • a = 666, b = 6
    • 6 插入到 666 的不同位置后,生成的数字为:6666, 6666, 6666, 6666
    • 最大值为 6666

代码

public class Main {
    public static int solution(int a, int b) {
        // 将整数a转换为字符串以便操作
        String aStr = String.valueOf(a);
        String bStr = String.valueOf(b);
        
        // 初始化最大结果
        String maxResult = "";

        // 遍历a的每个插入位置
        for (int i = 0; i <= aStr.length(); i++) {
            // 在第i位置插入b
            String current = aStr.substring(0, i) + bStr + aStr.substring(i);

            // 更新最大值
            if (maxResult.isEmpty() || Integer.parseInt(current) > Integer.parseInt(maxResult)) {
                maxResult = current;
            }
        }

        // 返回结果转换为整数
        return Integer.parseInt(maxResult);
    }

    public static void main(String[] args) {
        System.out.println(solution(76543, 4) == 765443); 
        System.out.println(solution(1, 0) == 10);         
        System.out.println(solution(44, 5) == 544);       
        System.out.println(solution(666, 6) == 6666);     
    }
}
  • 方法 solution(int a, int b):

    • ab 是输入的两个整数。
    • 首先将 ab 转换成字符串类型,方便在 a 中进行插入操作。
    • 然后通过遍历 a 字符串的每个位置,将 b 插入其中,并计算出可能得到的最大整数。
  • 主要操作:

    • String.valueOf(a)String.valueOf(b) 用来将整数 ab 转换为字符串,以便进行插入操作。
    • maxResult 用来保存当前的最大结果。
    • 使用一个 for 循环,遍历 a 的每个字符的位置(从 0aStr.length()),在每个位置尝试插入 b,并检查新生成的数字是否比当前的 maxResult 大。
    • 每次插入后通过 Integer.parseInt(current) 转换字符串为整数,比较得到的值与当前的 maxResult,并更新 maxResult
  • 结果返回:

    • 最终返回 maxResult 转换为整数。
  • 主方法 main(String[] args):

    • 测试了几个不同的例子,打印出 solution 方法的返回结果,验证插入操作的正确性。

提交结果


原文地址:https://blog.csdn.net/qq_54813250/article/details/144990516

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!