找出加密后的字符串
找出加密后的字符串
给你一个字符串 s 和一个整数 k。请你使用以下算法加密字符串:对于字符串 s 中的每个字符 c,用字符串中 c 后面的第 k 个字符替换 c(以循环方式)。返回加密后的字符串。
输入: s = “dart”, k = 3输出: “tdar”解释:对于 i = 0,’d’ 后面的第 3 个字符是 ‘t’。对于 i = 1,’a’ 后面的第 3 个字符是 ‘d’。对于 i = 2,’r’ 后面的第 3 个字符是 ‘a’。对于 i = 3,’t’ 后面的第 3 个字符是 ‘r’。
1234var getEncryptedString = function(s, k) { const remainder = k % s.length; return s.substring(remainder) + s.substring(0, remainder);};
两个数对之间的最大乘积差
两个数对之间的最大乘积差
两个数对 (a, b) 和 (c, d) 之间的 乘积差 定义为 (a _ b) - (c _ d) 。例如,(5, 6) 和 (2, 7) 之间的乘积差是 (5 _ 6) - (2 _ 7) = 16 。给你一个整数数组 nums ,选出四个 不同的 下标 w、x、y 和 z ,使数对 (nums[w], nums[x]) 和 (nums[y], nums[z]) 之间的 乘积差 取到 最大值 。返回以这种方式取得的乘积差中的 最大值 。
输入:nums = [5,6,2,7,4]输出:34解释:可以选出下标为 1 和 3 的元素构成第一个数对 (6, 7) 以及下标 2 和 4 构成第二个数对 (2, 4)乘积差是 (6 _ 7) - (2 _ 4) = 34
输入:nums = [4,2,5,9,7,4,8]输出:64解释:可以选出下标为 3 和 6 的元素构成第一个数对 (9, 8) 以及下标 1 和 5 构成第二个数对 (2, 4)乘积差是 (9 _ 8) - (2 _ 4) = 64
1234var maxProductDifferenc ...
雪糕的最大数量
雪糕的最大数量
夏日炎炎,小男孩 Tony 想买一些雪糕消消暑。商店中新到 n 支雪糕,用长度为 n 的数组 costs 表示雪糕的定价,其中 costs[i] 表示第 i 支雪糕的现金价格。Tony 一共有 coins 现金可以用于消费,他想要买尽可能多的雪糕。注意:Tony 可以按任意顺序购买雪糕。给你价格数组 costs 和现金量 coins ,请你计算并返回 Tony 用 coins 现金能够买到的雪糕的 最大数量 。你必须使用计数排序解决此问题。
输入:costs = [1,3,2,4,1], coins = 7输出:4解释:Tony 可以买下标为 0、1、2、4 的雪糕,总价为 1 + 3 + 2 + 1 = 7
输入:costs = [10,6,8,7,7,8], coins = 5输出:0解释:Tony 没有足够的钱买任何一支雪糕。
12345678910111213141516171819202122var maxIceCream = function (costs, coins) { let map = new Map(), count = ...
拼车
拼车
车上最初有 capacity 个空座位。车 只能 向一个方向行驶(也就是说,不允许掉头或改变方向)给定整数 capacity 和一个数组 trips , trip[i] = [numPassengersi, fromi, toi] 表示第 i 次旅行有 numPassengersi 乘客,接他们和放他们的位置分别是 fromi 和 toi 。这些位置是从汽车的初始位置向东的 里数。当且仅当你可以在所有给定的行程中接送所有乘客时,返回 true,否则请返回 false。
输入:trips = [[2,1,5],[3,3,7]], capacity = 4输出:false
输入:trips = [[2,1,5],[3,3,7]], capacity = 5输出:true
12345678910111213141516var carPooling = function(trips, capacity) { // [num_passengers, start_location, end_location] // [0, 1, 2, 3, 4] // ...
仅含置位位的最小整数
仅含置位位的最小整数
给你一个正整数 n。返回 大于等于 n 且二进制表示仅包含 置位 位的 最小 整数 x 。置位 位指的是二进制表示中值为 1 的位。
输入: n = 5输出: 7解释:7 的二进制表示是 “111”。
输入: n = 10输出: 15解释:15 的二进制表示是 “1111”。
1234567var smallestNumber = function(n) { let x = 1; while (x < n) { x = x * 2 + 1; } return x;};
替换为数位和以后的最小元素
替换为数位和以后的最小元素
给你一个整数数组 nums 。请你将 nums 中每一个元素都替换为它的各个数位之 和 。请你返回替换所有元素以后 nums 中的 最小 元素。
输入:nums = [10,12,13,14]输出:1解释:nums 替换后变为 [1, 3, 4, 5] ,最小元素为 1 。
输入:nums = [1,2,3,4]输出:1解释:nums 替换后变为 [1, 2, 3, 4] ,最小元素为 1 。
12345678910111213141516var minElement = function (nums) { let minSum = Infinity; for (let num of nums) { minSum = Math.min(minSum, getDigitsSum(num)); } return minSum;};var getDigitsSum = function (num) { let sum = 0; while (num > ...
将日期转换为二进制表示
将日期转换为二进制表示
给你一个字符串 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 ...