Published: Nov 7, 2022
Introduction
The given number consists of only 6 and/or 9, and only one character is allowed to change. Given that, find 6 from left, replace the first 6 to 9. Only point we should care about is whether 6 exists or not. If not, the given string is all 9s and no need to change.
Problem Description
You are given a positive integer
num
consisting only of digits 6 and 9.Return the maximum number you can get by changing at most one digit (6 becomes 9, and 9 becomes 6).
Constraints:
1 <= num <= 10**4
- num consists of only 6 and 9 digits.
Examples
Example 1
Input: num = 9669
Output: 9969
Example 2
Input: num = 9996
Output: 9999
Example 3
Input: num = 9999
Output: 9999
Analysis
It’s easy to check every digit if the number is string. The solution here starts converting the given number to string. Once the index of the first 6 is found, substring concatenation creates the answer. Lastly, convert the result string to integer to meet with the requirement.
Solution
class Maximum69Number {
public:
int maximum69Number (int num) {
std::string s = std::to_string(num);
std::size_t found = s.find("6");
if (found != std::string::npos) {
s.replace(found, 1, "9");
}
return std::stoi(s);
}
};
class Maximum69Number {
public int maximum69Number (int num) {
String s = String.valueOf(num);
int found = s.indexOf("6");
if (found >= 0) {
s = s.replaceFirst("6", "9");
}
return Integer.parseInt(s);
}
}
/**
* @param {number} num
* @return {number}
*/
var maximum69Number = function(num) {
let s = num.toString();
let found = s.indexOf("6");
if (found >= 0) {
s = s.replace('6', '9');
}
return parseInt(s);
};
class Maximum69Number:
def maximum69Number (self, num: int) -> int:
s = str(num)
if '6' in s:
idx = s.index('6')
s = s[:idx] + '9' + s[idx+1:]
return int(s)
# @param {Integer} num
# @return {Integer}
def maximum69_number (num)
s = num.to_s
if s.count('6') > 0
idx = s.index('6')
s = s[0...idx] + '9' + s[idx + 1..-1]
end
s.to_i
end
Complexities
- Time:
O(n)
– n: number of digits - Space:
O(1)