Formatted question description: https://leetcode.ca/all/1432.html

# 1432. Max Difference You Can Get From Changing an Integer

## Level

Medium

## 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 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`

## Solution

Obviously, `a`

is the maximum possible integer and `b`

is the minimum possible integer.

To obtain `a`

, find the highest digit that is not 9, and replace all the digits with the value to 9.

To obtain `b`

, consider two cases.

- If the highest digit is 1, then find the highest digit that is not 0 or 1, and replace all the digits with the value to 0. Note that the original digit cannot have value 1 since the highest digit cannot be changed to 0.
- If the nighest digit is not 1, then simply replace all the digits with the same value as the highest digit to 1.

After obtaining `a`

and `b`

, return `a - b`

.

```
class Solution {
public int maxDiff(int num) {
int max = getMax(num), min = getMin(num);
return max - min;
}
public int getMax(int num) {
char[] array = String.valueOf(num).toCharArray();
int length = array.length;
char original = '0';
for (int i = 0; i < length; i++) {
if (array[i] != '9') {
original = array[i];
break;
}
}
for (int i = 0; i < length; i++) {
if (array[i] == original)
array[i] = '9';
}
return Integer.parseInt(new String(array));
}
public int getMin(int num) {
char[] array = String.valueOf(num).toCharArray();
int length = array.length;
if (array[0] == '1') {
char original = '0';
for (int i = 1; i < length; i++) {
if (array[i] != '0' && array[i] != '1') {
original = array[i];
break;
}
}
for (int i = 1; i < length; i++) {
if (array[i] == original)
array[i] = '0';
}
} else {
char original = array[0];
for (int i = 0; i < length; i++) {
if (array[i] == original)
array[i] = '1';
}
}
return Integer.parseInt(new String(array));
}
}
```