给定一个非负整数,你至多可以交换一次数字中的任意两位。返回你能得到的最大值。
示例 1 :
输入: 2736
输出: 7236
解释: 交换数字2和数字7。
示例 2 :
输入: 9973
输出: 9973
解释: 不需要交换。
注意:
给定数字的范围是 [0, 108]
因为只有8位数,直接穷举,留点头发吧~
class Solution { public int maximumSwap(int num) { char[] ch = String.valueOf(num).toCharArray(); int n = ch.length; for(int i=0; i<n; i++) { for(int j=i+1; j<n; j++) { swap(ch, i, j); num = Math.max(num, Integer.parseInt(new String(ch))); swap(ch, i, j); } } return num; } public void swap(char[]src, int a, int b) { char reg = src[a]; src[a] = src[b]; src[b] = reg; } }