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
d1innumwithd2. - Bob can remap a digit to itself, in which case
numdoes 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)