美文网首页
1432. 改变一个整数能得到的最大差值(中等)

1432. 改变一个整数能得到的最大差值(中等)

作者: 斐_花小七 | 来源:发表于2020-06-01 10:22 被阅读0次

    给你一个整数num。你可以对它进行如下步骤恰好两次:
    选择一个数字x(0<=x<=9).
    选择另一个数字y(0<=y<=9),数字y可以等于x
    将num中所有出现x的数位都用y替换。
    得到的新的整数不能有前导0,得到的新整数也不能是0 。
    令两次num的操作得到的结果分别为a和b。

    请你返回a和b的最大差值 。

    示例 1:
    输入:num = 555
    输出:888
    解释:第一次选择 x = 5 且 y = 9 ,并把得到的新数字保存在 a 中。
    第二次选择 x = 5 且 y = 1 ,并把得到的新数字保存在 b 中。
    现在,我们有 a = 999 和 b = 111 ,最大差值为 888

    示例 2:
    输入:num = 9
    输出:8
    解释:第一次选择 x = 9 且 y = 9 ,并把得到的新数字保存在 a 中。
    第二次选择 x = 9 且 y = 1 ,并把得到的新数字保存在 b 中。
    现在,我们有 a = 9 和 b = 1 ,最大差值为 8

    class Solution:
        def maxDiff(self, num: int) -> int:
            num_str = str(num)
            num_str_max = num_str
            num_str_min = num_str
            for i in range(len(num_str_max)):
                if num_str_max[i] != "9":
                    num_str_max = num_str_max.replace(num_str_max[i], '9')
                    break
                    
            if num_str_min[0] != '1':
                num_str_min = num_str_min.replace(num_str_min[0], '1')
            else:
                for i in range(1, len(num_str_min)):
                    if num_str_min[i] != "0" and num_str_min[i] != "1":
                        num_str_min = num_str_min.replace(num_str_min[i], '0')
                        break
            return int(num_str_max) - int(num_str_min)
    

    思路:
    1.第一次循环,从前往后寻找第一个不是9的数字,转变为9
    2.第二次循环,如果首项不是1,则转变为1,最小
    如果首项是1,则从第二项寻找不是0,且不是1的数字,转变为0.
    (因为首项不能为0,当首项为1的时候,转变的数字不能为1)

    相关文章

      网友评论

          本文标题:1432. 改变一个整数能得到的最大差值(中等)

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