将日期转换为二进制表示
将日期转换为二进制表示
给你一个字符串 date,它的格式为 yyyy-mm-dd,表示一个公历日期。date 可以重写为二进制表示,只需要将年、月、日分别转换为对应的二进制表示(不带前导零)并遵循 year-month-day 的格式。返回 date 的 二进制 表示。
输入: date = “2080-02-29”输出: “100000100000-10-11101”解释:100000100000, 10 和 11101 分别是 2080, 02 和 29 的二进制表示。
输入: date = “1900-01-01”输出: “11101101100-1-1”解释:11101101100, 1 和 1 分别是 1900, 1 和 1 的二进制表示。
123var convertDateToBinary = function(date) { return date.split('-').map((i) => i - 0).map((i) => i.toString(2)).join('-');}; ...
检查二进制字符串字段
检查二进制字符串字段
给你一个二进制字符串 s ,该字符串 不含前导零 。如果 s 包含 零个或一个由连续的 ‘1’ 组成的字段 ,返回 true 。否则,返回 false 。
输入:s = “1001”输出:false解释:由连续若干个 ‘1’ 组成的字段数量为 2,返回 false
输入:s = “110”输出:true
12345var checkOnesSegment = function(s) { let arr = s.split('0').filter(e=>e!=""&&e!=null) if(arr.length==1) return true else return false};
交替合并字符串
交替合并字符串
给你两个字符串 word1 和 word2 。请你从 word1 开始,通过交替添加字母来合并字符串。如果一个字符串比另一个字符串长,就将多出来的字母追加到合并后字符串的末尾。返回 合并后的字符串 。
输入:word1 = “abc”, word2 = “pqr”输出:”apbqcr”解释:字符串合并情况如下所示:word1: a b cword2: p q r合并后: a p b q c r
输入:word1 = “ab”, word2 = “pqrs”输出:”apbqrs”解释:注意,word2 比 word1 长,”rs” 需要追加到合并后字符串的末尾。word1: a bword2: p q r s合并后: a p b q r s
123456789101112131415161718192021var mergeAlternately = function(word1, word2) { let index = 0 const max = Math.max(word1.length, word2.length) let a ...
生成交替二进制字符串的最少操作数
生成交替二进制字符串的最少操作数
给你一个仅由字符 ‘0’ 和 ‘1’ 组成的字符串 s 。一步操作中,你可以将任一 ‘0’ 变成 ‘1’ ,或者将 ‘1’ 变成 ‘0’ 。交替字符串 定义为:如果字符串中不存在相邻两个字符相等的情况,那么该字符串就是交替字符串。例如,字符串 “010” 是交替字符串,而字符串 “0100” 不是。返回使 s 变成 交替字符串 所需的 最少 操作数。
输入:s = “0100”输出:1解释:如果将最后一个字符变为 ‘1’ ,s 就变成 “0101” ,即符合交替字符串定义。
输入:s = “10”输出:0解释:s 已经是交替字符串。
1234567891011var minOperations = function(s) { let startWithZero = 0, startWithOne = 0 for (let i = 0; i < s.length; i ++) { if ((i % 2) === 0) { s[i] === '1 ...
找出最大的可达成数字
找出最大的可达成数字
给你两个整数 num 和 t 。如果整数 x 可以在执行下述操作不超过 t 次的情况下变为与 num 相等,则称其为 可达成数字 :每次操作将 x 的值增加或减少 1 ,同时可以选择将 num 的值增加或减少 1 。返回所有可达成数字中的最大值。可以证明至少存在一个可达成数字。
输入:num = 4, t = 1输出:6解释:最大可达成数字是 x = 6 ,执行下述操作可以使其等于 num :
x 减少 1 ,同时 num 增加 1 。此时,x = 5 且 num = 5 。可以证明不存在大于 6 的可达成数字。
输入:num = 3, t = 2输出:7解释:最大的可达成数字是 x = 7 ,执行下述操作可以使其等于 num :
x 减少 1 ,同时 num 增加 1 。此时,x = 6 且 num = 4 。
x 减少 1 ,同时 num 增加 1 。此时,x = 5 且 num = 5 。可以证明不存在大于 7 的可达成数字。
123var theMaximumAchievableX = function(num, t) { ...
判断一个数是否迷人
判断一个数是否迷人
给你一个三位数整数 n 。如果经过以下修改得到的数字 恰好 包含数字 1 到 9 各一次且不包含任何 0 ,那么我们称数字 n 是 迷人的 :将 n 与数字 2 _ n 和 3 _ n 连接 。如果 n 是迷人的,返回 true,否则返回 false 。连接 两个数字表示把它们首尾相接连在一起。比方说 121 和 371 连接得到 121371 。
输入:n = 192输出:true解释:我们将数字 n = 192 ,2 _ n = 384 和 3 _ n = 576 连接,得到 192384576 。这个数字包含 1 到 9 恰好各一次。
输入:n = 100输出:false解释:我们将数字 n = 100 ,2 _ n = 200 和 3 _ n = 300 连接,得到 100200300 。这个数字不符合上述条件。
12345678910var isFascinating = function(n) { n = `${n}${n * 2}${n * 3}`; if(n. ...
倍数求和
倍数求和
给你一个正整数 n ,请你计算在 [1,n] 范围内能被 3、5、7 整除的所有整数之和。返回一个整数,用于表示给定范围内所有满足约束条件的数字之和。
输入:n = 7输出:21解释:在 [1, 7] 范围内能被 3、5、7 整除的所有整数分别是 3、5、6、7 。数字之和为 21。
输入:n = 10输出:40解释:在 [1, 10] 范围内能被 3、5、7 整除的所有整数分别是 3、5、6、7、9、10 。数字之和为 40。
1234567var sumOfMultiples = function(n) { let res = 0; for (let i = 1; i <= n; i++) { if (i % 3 === 0 || i % 5 === 0 || i % 7 === 0) res += i; } return res;};
各位相加
各位相加
给定一个非负整数 num,反复将各个位上的数字相加,直到结果为一位数。返回这个结果。
输入: num = 38输出: 2解释: 各位相加的过程为:38 –> 3 + 8 –> 1111 –> 1 + 1 –> 2由于 2 是一位数,所以返回 2。
输入: num = 0输出: 0
123var addDigits = function(num) { return num == 0 ? num : (num - 1) % 9 + 1};
数字 1 的个数
数字 1 的个数
给定一个整数 n,计算所有小于等于 n 的非负整数中数字 1 出现的个数。
输入:n = 13输出:6
输入:n = 0输出:0
12345678910111213var countDigitOne = function(n) { let count = 0; for (let i = 1; i <= n; i *= 10) { let divide = i * 10; let p = Math.floor(n / divide), k = n % divide, rest = 0; count += p * i; rest = (k > (2 * i - 1)) ? i : ((k < i) ? 0 : k - i + 1); count += rest; } return count;};
判断是否可以赢得数字游戏
判断是否可以赢得数字游戏
给你一个 正整数 数组 nums。Alice 和 Bob 正在玩游戏。在游戏中,Alice 可以从 nums 中选择所有个位数 或 所有两位数,剩余的数字归 Bob 所有。如果 Alice 所选数字之和 严格大于 Bob 的数字之和,则 Alice 获胜。如果 Alice 能赢得这场游戏,返回 true;否则,返回 false。
输入:nums = [1,2,3,4,10]输出:false解释:Alice 不管选个位数还是两位数都无法赢得比赛。
123456789101112var canAliceWin = function(nums) { let single_digit_sum = 0; let double_digit_sum = 0; for (const num of nums) { if (num < 10) { single_digit_sum += num; } else { double_d ...