题目如下:
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 digity
can be equal tox
.- Replace all the occurrences of
x
in the decimal representation ofnum
byy
.- The new integer cannot have any leading zeros, also the new integer cannot be 0.
Let
a
andb
be the results of applying the operations tonum
the first and second times, respectively.Return the max difference between
a
andb
.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 = 888Example 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 = 8Example 3:
Input: num = 123456 Output: 820000Example 4:
Input: num = 10000 Output: 80000Example 5:
Input: num = 9288 Output: 8700Constraints:
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)