max-diff.py (1157B)
1 class Solution: 2 def minMaxDifference(self, num: int) -> int: 3 4 num_ls = [] 5 while num > 0: 6 lsb = num % 10 7 num = num // 10 8 num_ls.append(lsb) 9 10 num_ls.reverse() 11 num_ls_min = num_ls.copy() 12 13 # min = setting msb to 0 (since int, no leading 0's) 14 15 val_to_map = num_ls[0] 16 17 for i in range(0, len(num_ls)): 18 if num_ls[i] == val_to_map: 19 num_ls_min[i] = 0 20 21 # max = setting max non 9 value to be = 9 (or leaving as is when all 9's) 22 23 num_ls_max = num_ls.copy() 24 digit_to_change = 9 25 26 for i in range(0, len(num_ls_max)): 27 if num_ls_max[i] != 9: 28 digit_to_change = num_ls_max[i] 29 break 30 31 for i in range(0, len(num_ls_max)): 32 if num_ls_max[i] == digit_to_change: 33 num_ls_max[i] = 9 34 35 max_val = to_int(num_ls_max) 36 min_val = to_int(num_ls_min) 37 38 return max_val - min_val 39 40 41 def to_int(num_ls) -> int: 42 num = 0 43 for i in range(len(num_ls) - 1, -1, -1): 44 num += num_ls[i] * 10 ** ((len(num_ls) - 1) - i) 45 return num