-
Notifications
You must be signed in to change notification settings - Fork 13
/
Copy path1432-max-difference-you-can-get-from-changing-an-integer.py
67 lines (55 loc) · 1.9 KB
/
1432-max-difference-you-can-get-from-changing-an-integer.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
"""
Problem Link: https://leetcode.com/problems/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
"""
class Solution:
def maxDiff(self, num: int) -> int:
num = list(str(num))
first_digit = num[0]
x = '9'
y = num[0] if num[0] != '1' else '0'
for i in num:
if i != x:
x = i
break
if y == '0':
for i in range(1, len(num)):
if num[i] not in ['0','1']:
y = num[i]
break
num1 = [i for i in num]
for i in range(len(num)):
if num[i] == x:
num[i] = '9'
if num1[i] == y:
num1[i] = '1' if first_digit != '1' else '0'
return int("".join(num)) - int("".join(num1))