本文共 915 字,大约阅读时间需要 3 分钟。
给定一个非负整数,你至多可以交换一次数字中的任意两位。返回你能得到的最大值。
示例 1 :
输入: 2736输出: 7236解释: 交换数字2和数字7。
示例 2 :
输入: 9973输出: 9973解释: 不需要交换。
注意:
package Solution670;import java.util.Arrays;class Solution { public int maximumSwap(int num) { int[] numarr = Integer.toString(num).chars().map(c -> c - '0').toArray(); l: for (int i = 0; i < numarr.length; i++) { int[] numarrcopy = Arrays.copyOfRange(numarr, i, numarr.length); Arrays.sort(numarrcopy); int max = numarrcopy[numarrcopy.length - 1]; for (int j = numarr.length - 1; j > i; j--) { if (max > numarr[i]) { if (numarr[j] == max) { int temp = numarr[i]; numarr[i] = numarr[j]; numarr[j] = temp; break l; } } } } int out = 0; for (int a : numarr) { out = 10 * out + a; } return out; } public static void main(String[] args) { Solution sol = new Solution(); int num = 1993; System.out.println(sol.maximumSwap(num)); }}
转载地址:http://zmniz.baihongyu.com/