leetcode1432. Max Difference You Can Get From Changing an Integer

Posted seyjs

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了leetcode1432. Max Difference You Can Get From Changing an Integer相关的知识,希望对你有一定的参考价值。

题目如下:

You are given an integer num. You will apply the following steps exactly two times:

  • Pick a digit x (0 <= x <= 9).
  • Pick another digit y (0 <= y <= 9). The digit y can be equal to x.
  • Replace all the occurrences of x in the decimal representation of num by y.
  • The new integer cannot have any leading zeros, also the new integer cannot be 0.

Let a and b be the results of applying the operations to num the first and second times, respectively.

Return the max difference between a and b.

Example 1:

Input: num = 555
Output: 888
Explanation: The first time pick x = 5 and y = 9 and store the new integer in a.
The second time pick x = 5 and y = 1 and store the new integer in b.
We have now a = 999 and b = 111 and max difference = 888

Example 2:

Input: num = 9
Output: 8
Explanation: The first time pick x = 9 and y = 9 and store the new integer in a.
The second time pick x = 9 and y = 1 and store the new integer in b.
We have now a = 9 and b = 1 and max difference = 8

Example 3:

Input: num = 123456
Output: 820000

Example 4:

Input: num = 10000
Output: 80000

Example 5:

Input: num = 9288
Output: 8700

Constraints:

  • 1 <= num <= 10^8

解题思路:最大值很好求,把第一个不是9的数字替换成9即可。最小值分两种情况,如果最高位不为1,那么替换成1;否则,找出第一个不为0的数字替换成0。

代码如下:

class Solution(object):
    def maxDiff(self, num):
        """
        :type num: int
        :rtype: int
        """
        str_num = str(num)
        max_replace = 9
        min_replace = 0
        for i in str_num:
            if i != 9:
                max_replace = i
                break

        replace_val = 0
        if str_num[0] != 1:
            min_replace = str_num[0]
            replace_val = 1
        else:
            for i in str_num:
                if i != 0 and i != str_num[0]:
                    min_replace = i
                    break

        max_num = str_num.replace(max_replace,9)
        min_num = str_num.replace(min_replace,replace_val)
        return int(max_num) - int(min_num)

 

以上是关于leetcode1432. Max Difference You Can Get From Changing an Integer的主要内容,如果未能解决你的问题,请参考以下文章

CPS1432

1432 总数统计

洛谷P1432 倒水问题(CODEVS.1226)

zzuli 1432(二进制特点)

BZOJ 1432: [ZJOI2009]Function

codevs 1432 总数统计