题目描述
小U手中有两个数字 a 和 b。第一个数字 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
思路解析
在这道题目中,我们要将数字 b 插入到数字 a 中的某个位置,使得结果数字最大化。主要的思路有以下几点:
数字转换:首先,将数字 a 和 b 转换成字符串形式,以便我们能够插入数字 b 到不同的位置。 遍历插入位置:遍历字符串 a 中所有可能的插入位置,将字符串 b 插入到每一个可能的位置,并生成新的数字。 比较大小:比较每次生成的数字,找到最大的那个。 返回结果:输出最大数字。
代码实现
public class Main {
public static int solution(int a, int b) {
// 将数字 a 和 b 转换为字符串
String strA = Integer.toString(a);
String strB = Integer.toString(b);
// 初始化最大结果
int maxResult = Integer.MIN_VALUE;
// 遍历字符串 strA 的每一个位置
for (int i = 0; i <= strA.length(); i++) {
// 尝试将 strB 插入到 strA 的第 i 个位置
String newStr = strA.substring(0, i) + strB + strA.substring(i);
// 将新字符串转换为整数
int newNum = Integer.parseInt(newStr);
// 更新最大结果
if (newNum > maxResult) {
maxResult = newNum;
}
}
// 返回最大结果
return 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);
}
}
知识总结
- 转换为字符串:使用
Integer.toString()将a和b转换为字符串。 - 遍历插入位置:使用
for循环遍历字符串strA的每一个位置。 - 插入操作:使用
substring方法将strB插入到strA的指定位置。 - 转换为整数:使用
Integer.parseInt()将新字符串转换为整数。 - 更新最大结果:比较新整数与当前最大结果,更新最大结果。
- 返回结果:返回最终的最大结果。
关键点:
- 插入位置的选择:需要考虑插入位置对结果的影响。
- 比较插入结果:需要比较所有可能的插入结果,选择最大的一个。