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

发布时间:2024年01月22日

题目

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

解题思路

  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));
    }
}

文章来源:https://blog.csdn.net/qq_45794129/article/details/135743146
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。