Offer 驾到,掘友接招!我正在参与2022春招打卡活动,点击查看活动详情。
一、题目描述
- 给你一个仅由数字 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 <= 10000num每一位上的数字都是 6 或者 9 。
二、思路分析:
- 需要得到数字最大,一定是位置越靠前的数字越大才符合,而且如果是
9变化成6反而变小了,所以只需要把最靠左边的数字6变化成9所得到的一定是最大的数字 - 首先将给定的数字切割成字符串,找到第一个数字是
6的项重新赋值9,然后再退出遍历- js直接用数组的
join方法拼接返回即可 - ts需要手动做一下强制类型转换返回
- js直接用数组的
三、AC 代码:
- TS需要做类型转换
function maximum69Number (num: number): number {
let nums = num.toString().split('');
for(let i = 0; i < nums.length; i++){
if(nums[i] === '6'){
nums[i] = '9'
break
}
}
return Number(nums.join(''));
};
- JS无类型报错
var maximum69Number = function(num) {
let nums = num.toString().split('');
for(let i = 0; i < nums.length; i++){
if(nums[i] === '6'){
nums[i] = '9'
break
}
}
return nums.join('')
};
四、总结:
- 题目简单难度
- 更多解题方式,移步题解区