1323. 6 和 9 组成的最大数字
1323. 6 和 9 组成的最大数字
题目
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
becomes9
, and9
becomes6
).
Example 1:
Input: num = 9669
Output: 9969
Explanation:
Changing the first digit results in 6669.
Changing the second digit results in 9969.
Changing the third digit results in 9699.
Changing the fourth digit results in 9666.
The maximum number is 9969.
Example 2:
Input: num = 9996
Output: 9999
Explanation: Changing the last digit 6 to 9 results in the maximum number.
Example 3:
Input: num = 9999
Output: 9999
Explanation: It is better not to apply any change.
Constraints:
1 <= num <= 10^4
num
consists of only6
and9
digits.
题目大意
给你一个仅由数字 6 和 9 组成的正整数 num
。
你最多只能翻转一位数字,将 6 变成 9,或者把 9 变成 6 。
请返回你可以得到的最大数字。
示例 1:
输入: num = 9669
输出: 9969
解释:
改变第一位数字可以得到 6669 。
改变第二位数字可以得到 9969 。
改变第三位数字可以得到 9699 。
改变第四位数字可以得到 9666 。
其中最大的数字是 9969 。
示例 2:
输入: num = 9996
输出: 9999
解释: 将最后一位从 6 变到 9,其结果 9999 是最大的数。
示例 3:
输入: num = 9999
输出: 9999
解释: 无需改变就已经是最大的数字了。
提示:
1 <= num <= 10^4
num
每一位上的数字都是 6 或者 9 。
解题思路
对于一个正数,某个位置上是 9
肯定比是 6
要大,因此:
- 如果
num
中存在6
,最大的数字是将最高位的6
替换为9
之后的数字。 - 如果
num
中不存在6
,最大的数字就是num
本身。
- 将
num
转换为字符串。 - 使用
replace
方法替换第一个6
为9
。 - 将结果转换回数字并返回。
复杂度分析
- 时间复杂度:
O(k)
,其中k
是num
的位数。需要遍历每一位来找到并替换第一个6
。 - 空间复杂度:
O(k)
,需要将数字转换为字符串,存储中间结果。
代码
/**
* @param {number} num
* @return {number}
*/
var maximum69Number = function (num) {
return Number(num.toString().replace('6', '9'));
};