• 670. Maximum Swap


    package LeetCode_670
    
    /**
     * 670. Maximum Swap
     * https://leetcode.com/problems/maximum-swap/description/
     *
     * Given a non-negative integer, you could swap two digits at most once to get the maximum valued number.
     * Return the maximum valued number you could get.
    
    Example 1:
    Input: 2736
    Output: 7236
    Explanation: Swap the number 2 and the number 7.
     * */
    class Solution {
        fun maximumSwap(num: Int): Int {
            val numString = num.toString()
            var leftIndex = -1
            var rightIndex = -1
            var maxNum = -1
            var maxIndex = -1
            for (i in numString.length - 1 downTo 0) {
                if (maxNum < numString[i].toInt()) {
                    maxNum = numString[i].toInt()
                    maxIndex = i
                }
                if (maxNum > numString[i].toInt()) {
                    leftIndex = i
                    rightIndex = maxIndex
                }
            }
            if (leftIndex == -1) {//for example: 9973
                return num
            }
            val chars = numString.toCharArray()
            swap(chars, leftIndex, rightIndex)
            return arrayToNum(chars)
        }
    
        private fun arrayToNum(array: CharArray): Int {
            var result = 0
            for (item in array) {
                if (item.equals("")) {
                    continue
                }
                result *= 10
                result += (item.toInt() - '0'.toInt())
            }
            return result
        }
    
        private fun swap(str: CharArray, start: Int, end: Int) {
            val temp = str[end]
            str[end] = str[start]
            str[start] = temp
        }
    }
  • 相关阅读:
    程序保护机制
    ubuntu单独安装DDMS
    Linux Syste m Call Table
    任意程序添加ShellCode
    解析结构化异常处理(SEH)(第一部分)
    CONTEXT(线程结构体)
    WINNT.H
    Html的空格显示
    随机变量的联合分布
    期望和期望的性质
  • 原文地址:https://www.cnblogs.com/johnnyzhao/p/13161004.html
Copyright © 2020-2023  润新知