美文网首页
670. 最大交换

670. 最大交换

作者: 编程小王子AAA | 来源:发表于2020-08-11 14:31 被阅读0次

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

    示例 1 :

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

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


    class Solution {
        public int maximumSwap(int num) {
            char[] c = String.valueOf(num).toCharArray();
            int max = Integer.MIN_VALUE;
            int max_index = 0;
            int [] arr = new int[c.length];
            arr[c.length - 1] = c.length - 1;
            
            for (int i = c.length - 1; i >= 0; i --) {
                if (c[i] - '0' > max) {
                    max = c[i] - '0';
                    max_index = i;
                }
                arr[i] = max_index;
            }
            for (int i = 0; i < c.length; i ++) {
                if (arr[i] != i && c[arr[i]] != c[i]) {
                    char tmp = c[i];
                    c[i] = c[arr[i]];
                    c[arr[i]] = tmp;
                    break;
                }
            }
            return Integer.parseInt(new String(c));
        }
    }
    

    相关文章

      网友评论

          本文标题:670. 最大交换

          本文链接:https://www.haomeiwen.com/subject/zgzldktx.html