670. 最大交换

题目

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

  1. 输入: 2736
  2. 输出: 7236
  3. 解释: 交换数字2和数字7

示例 2 :

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

注意:

  1. 给定数字的范围是 [0, 10^8]

题解

水题无需多言

class Solution:
    def maximumSwap(self, num: int) -> int:
        str_num = str(num)
        num_list = list(str_num)
        for i in range(len(num_list)):
            max_num = max(num_list[i:])
            if max_num != num_list[i]:
                for j in range(len(num_list)-1, i-1, -1):
                    if max_num == num_list[j]:
                        max_bit = j
                        break
                num_list[max_bit] = num_list[i]
                num_list[i] = max_num
                break
        return int(''.join(num_list))