670. 最大交换 --力扣 --JAVA

题目

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

解题思路

  1. 将数字转换成字符数组便于遍历;
  2. 寻找是否存在比当前元素大的元素,取最后匹配到的元素,进行交换并跳出循环;

代码展示

class Solution {
    public int maximumSwap(int num) {
        char[] data = String.valueOf(num).toCharArray();
        for(int i = 0; i < data.length; i++){
            char max = data[i];
            int no = i;
            for(int j = i + 1; j < data.length; j++){
                if(data[j] > max || (data[j] == max && no != i)){
                    max = data[j];
                    no = j;
                }
            }
            if(no != i){
                data[no] = data[i];
                data[i] = max;
                break;
            }
        }
        return Integer.valueOf(new String(data));
    }
}

你可能感兴趣的:(力扣练习,算法,数据结构)