2025-06-14 Daily Challenge
Today I have done leetcode's June LeetCoding Challenge with cpp
.
June LeetCoding Challenge 14
Description
Maximum Difference by Remapping a Digit
You are given an integer num
. You know that Bob will sneakily remap one of the 10
possible digits (0
to 9
) to another digit.
Return the difference between the maximum and minimum values Bob can make by remapping exactly one digit in num
.
Notes:
- When Bob remaps a digit d1 to another digit d2, Bob replaces all occurrences of
d1
innum
withd2
. - Bob can remap a digit to itself, in which case
num
does not change. - Bob can remap different digits for obtaining minimum and maximum values respectively.
- The resulting number after remapping can contain leading zeroes.
Example 1:
Input: num = 11891 Output: 99009 Explanation: To achieve the maximum value, Bob can remap the digit 1 to the digit 9 to yield 99899. To achieve the minimum value, Bob can remap the digit 1 to the digit 0, yielding 890. The difference between these two numbers is 99009.
Example 2:
Input: num = 90 Output: 99 Explanation: The maximum value that can be returned by the function is 99 (if 0 is replaced by 9) and the minimum value that can be returned by the function is 0 (if 9 is replaced by 0). Thus, we return 99.
Constraints:
1 <= num <= 108
Solution
class Solution {
public:
int minMaxDifference(int num) {
string n = to_string(num);
string maxN = n;
int len = n.length();
int start = 0;
while(start < len && maxN[start] == '9') start += 1;
for(int i = start + 1; i < len; ++i) {
if(maxN[i] == maxN[start]) maxN[i] = '9';
}
if(start < len) maxN[start] = '9';
string minN = n;
for(int i = 1; i < len; ++i) {
if(minN[i] == minN[0]) minN[i] = '0';
}
minN[0] = '0';
return stoi(maxN) - stoi(minN);
}
};
// Accepted
// 214/214 cases passed (0 ms)
// Your runtime beats 100 % of cpp submissions
// Your memory usage beats 37.33 % of cpp submissions (8.3 MB)