每周一题:6和9组成的最大数字(已更新JS)
2021-03-06 03:28
标签:图片 split code 题目 函数 关键点 string 最大 数组下标 题目描述: 给你一个仅由数字 6 和 9 组成的正整数 num。 你最多只能翻转一位数字,将 6 变成 9,或者把 9 变成 6 。 请返回你可以得到的最大数字。 示例 1: 输入:num = 9669 示例 2: 输入:num = 9996 示例 3: 输入:num = 9999 提示: 1 num 每一位上的数字都是 6 或者 9 。 代码如下: var maximum69Number = function(num) { let arr=num.toString(); }; 通过率:
思路如下 在这道编程题中我们不知道num的具体数值,所幸题目已经给出了限制条件,num全部由6和9组成,不会拥有别的数字。 那么我们该如何找出最大值呢?首先,6和9相比肯定是9比6大,题目中要求只能改动一位数字,所以我们可以尝试寻找数字中的6进行改动从而输出num的最大值。比如输入6996,我们将第一个6改成9就可以输出最大值了,再比如9696,我们也是将第一个6改成9就可以得到最大值9996了。所以这个题目的关键点在于找到正整数中的第一个6。 第二步,我们该如何找到第一个数字6呢?首先我们要将正整数转换成数组,因为正整数不好进行操作和改动,在这里我们可以用Number.toString()函数对正整数num进行转化,这个函数的作用更具体为将数字转换为字符串。然后用split()函数将字符串转化为数组重新赋值给num。 接着我们就需要找到第一个6出现的位置,这里就需要利用函数,并借助函数输出数组下标找到这个元素,对其进行更换。这里我们可以使用indexOf() 方法,其作用为返回某个指定的字符串值在字符串中首次出现的位置,输出元素在数组中的位置。然后我们就可以根据数组下标对其元素重新赋值进行更换。 接着我们就需要将改动完成后的数组重新转换为正整数了,首先用join()方法,可以将数组返回一个字符串,用于把数组中的所有元素放入一个字符串中。在这里括号内是可以加标点符号或者是其他分隔符的,但由于我们是需要返回整数,所以用不着在括号内加别的符号。 最后我们再将字符串转化为正整数,这里使用Number() 函数把对象的值转换为数字,然后返回改动后的正整数值。值得注意的是当对象的值无法转换为数字时,Number() 函数返回 NaN。 每周一题:6和9组成的最大数字(已更新JS) 标签:图片 split code 题目 函数 关键点 string 最大 数组下标 原文地址:https://www.cnblogs.com/sayg-1207/p/12882629.html
输出:9969
解释:
改变第一位数字可以得到 6669 。
改变第二位数字可以得到 9969 。
改变第三位数字可以得到 9699 。
改变第四位数字可以得到 9666 。
其中最大的数字是 9969 。
输出:9999
解释:将最后一位从 6 变到 9,其结果 9999 是最大的数。
输出:9999
解释:无需改变就已经是最大的数字了。
num = arr.split("");
let index = arr.indexOf("6");
num[index] = "9";
let arrs=num.join("");
return Number(arrs);