最大交换(力扣)枚举 JAVA

给定一个非负整数,你至多可以交换一次数字中的任意两位。返回你能得到的最大值。

示例 1 :

输入: 2736
输出: 7236
解释: 交换数字2和数字7。

示例 2 :

输入: 9973
输出: 9973
解释: 不需要交换。

注意:

给定数字的范围是 [0, 10^8]

解题思路:

1、数最大有八位

2、两两交换最多交换(1 + 7)* 7 / 2 = 28次

代码:

class Solution {
    public int maximumSwap(int num) {
         char a[] = (num + "").toCharArray();
         int len = a.length;
         int maxres = num;
         for(int i = 0; i < len; i ++)
        	 for(int j = i + 1; j < len; j ++) {
        		 swap(i, j, a);
        		 maxres = Math.max(maxres, Integer.parseInt(new String(a)));
        		 swap(i, j, a);
        	 }
         return maxres;
    }
    public void swap(int i, int j, char[]a) {
    	char temp = a[i];
    	a[i] = a[j];
    	a[j] = temp;
    }
}

在这里插入图片描述

你可能感兴趣的:(leetcode,java,算法)