leetcode_670. 最大交换

97 阅读1分钟

要求

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

示例 1 :

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

示例 2 :

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

注意:

  • 给定数字的范围是 [0, 108]

核心代码

class Solution:
    def maximumSwap(self, num: int) -> int:
        res = num
        num = str(num)
        for i in range(len(num)):
            for j in range(i + 1,len(num)):
                b = list(num)
                b[i],b[j] = num[j],num[i]
                m = int("".join(b))
                res = max(res,m)
        return res

image.png

解题思路:第一种解法:我们使用暴力循环的方式,我们将从头到尾的所有数字都进行一轮交换,这样我们在这个过程中留存历史最佳,即最终的结果.