Max Difference You Can Get From Changing an Integer
Description
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
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
Solution(javascript)
/**
* @param {number} num
* @return {number}
*/
const maxDiff = function (num) {
const arr = num.toString().split('')
const num1 = arr.find(x => x !== '9')
const max = arr.map(x => (x === num1 ? '9' : x)).join('')
let num2 = 0
if (arr[0] === '1') {
num2 = arr.find(x => x !== '1' && x !== '0')
} else {
num2 = arr.find(x => x !== '0')
}
let min = 0
if (arr[0] === num2) {
min = arr.map(x => (x === num2 ? '1' : x)).join('')
} else {
min = arr.map(x => (x === num2 ? '0' : x)).join('')
}
return Number(max) - Number(min)
}