6 和 9 组成的最大数字

180 阅读2分钟

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 <= 10000
    • num 每一位上的数字都是 6 或者 9 。

二、思路分析:

  • 需要得到数字最大,一定是位置越靠前的数字越大才符合,而且如果是9变化成6反而变小了,所以只需要把最靠左边的数字6变化成9所得到的一定是最大的数字
  • 首先将给定的数字切割成字符串,找到第一个数字是6的项重新赋值9,然后再退出遍历
    • js直接用数组的join方法拼接返回即可
    • ts需要手动做一下强制类型转换返回

三、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('')
};

四、总结:

image.png