本文共 1162 字,大约阅读时间需要 3 分钟。
为了解决这个问题,我们需要找到给定数字交换一次任意两位后的最大值。我们可以通过遍历所有可能的交换对来找到最大的数值。
这种方法虽然计算量较大,但对于数字的位数较少的情况来说,效率是可以接受的。通过遍历所有可能的交换对,我们可以确保找到最大的数值。
import java.util.Arrays;public class Solution { public int maximumSwap(int num) { char[] numChars = Integer.toString(num).toCharArray(); int n = numChars.length; long maxVal = (long) num; for (int i = 0; i < n; i++) { for (int j = i + 1; j < n; j++) { // 创建交换后的数字 char[] newDigits = Arrays.copyOf(numChars, n); newDigits[i] = numChars[j]; newDigits[j] = numChars[i]; long newNum = Long.parseLong(new String(newDigits)); if (newNum > maxVal) { maxVal = newNum; } } } return (int) maxVal; }} 这种方法确保了我们能找到交换一次数字后得到的最大值,适用于所有给定的数字范围。
转载地址:http://zmniz.baihongyu.com/