Max Difference You Can Get From Changing an Integer

Similar Problems:

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

Github: code.dennyzhang.com

Credits To: leetcode.com

Leave me comments, if you have better ways to solve.

- Solution:

## https://code.dennyzhang.com/max-difference-you-can-get-from-changing-an-integer ## Basic Ideas: greedy ## ## Get the the biggest ## Get the smallest ## ## Complexity: Time ?, Space ? class Solution: def maxDiff(self, num: int) -> int: nums = list(str(num)) n = len(nums) big, small = copy.deepcopy(nums), copy.deepcopy(nums) ch1, ch2 = '', '' for i, v in enumerate(big): if ch1 == '' and v != '9': # define the mapping ch1, ch2 = v, '9' if v == ch1: big[i] = ch2 ch1, ch2 = '', '' for i, v in enumerate(small): # define the mapping if ch1 == '': if i == 0: if v != '1': ch1, ch2 = v, '1' else: if v != '1' and v != '0': ch1, ch2 = v, '0' if v == ch1: small[i] = ch2 return int(''.join(big))-int(''.join(small))