【leetcode】1432. 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)

 

posted @ 2020-06-03 22:32  seyjs  阅读(333)  评论(0编辑  收藏  举报