亲密字符串
亲密字符串
给你两个字符串 s 和 goal ,只要我们可以通过交换 s 中的两个字母得到与 goal 相等的结果,就返回 true ;否则返回 false 。交换字母的定义是:取两个下标 i 和 j (下标从 0 开始)且满足 i != j ,接着交换 s[i] 和 s[j] 处的字符。例如,在 “abcd” 中交换下标 0 和下标 2 的元素可以生成 “cbad” 。
输入:s = “ab”, goal = “ba”输出:true解释:你可以交换 s[0] = ‘a’ 和 s[1] = ‘b’ 生成 “ba”,此时 s 和 goal 相等。
输入:s = “ab”, goal = “ab”输出:false解释:你只能交换 s[0] = ‘a’ 和 s[1] = ‘b’ 生成 “ba”,此时 s 和 goal 不相等。
123456789101112131415161718var buddyStrings = function(s, goal) { // 一. 两字符串长度不等, 直接返回false if(s.length !== goal.length) r ...
括号的分数
括号的分数
给定一个平衡括号字符串 S,按下述规则计算该字符串的分数:() 得 1 分。AB 得 A + B 分,其中 A 和 B 是平衡括号字符串。(A) 得 2 * A 分,其中 A 是平衡括号字符串。
输入: “()”输出: 1
输入: “(())”输出: 2
1234567891011121314151617181920212223var scoreOfParentheses = function(s) { var stack = [] for (var i = 0; i < S.length; i++) { if (S[i] === '(') stack.push('(') if (S[i] === ')') { if (stack[stack.length - 1] === '(') { stack.pop() stack.push(1) } else { ...
破解闯关密码
破解闯关密码
闯关游戏需要破解一组密码,闯关组给出的有关密码的线索是:一个拥有密码所有元素的非负整数数组 password密码是 password 中所有元素拼接后得到的最小的一个数请编写一个程序返回这个密码。
输入: password = [15, 8, 7]输出: “1578”
输入: password = [0, 3, 30, 34, 5, 9]输出: “03033459”
123var crackPassword = function(password) { return password.sort((a,b) => ('' + a + b) - ('' + b + a)).join('');};
存在重复元素 III
存在重复元素 III
给你一个整数数组 nums 和两个整数 k 和 t 。请你判断是否存在 两个不同下标 i 和 j,使得 abs(nums[i] - nums[j]) <= t ,同时又满足 abs(i - j) <= k 。如果存在则返回 true,不存在返回 false。
输入:nums = [1,2,3,1], k = 3, t = 0输出:true
输入:nums = [1,0,1,1], k = 1, t = 2输出:true
12345678var containsNearbyAlmostDuplicate = function(nums, k, t) { for (let i = 0; i < nums.length; i++) { for (let j = i + 1; j <= i + k && j < nums.length; j++) { if (Math.abs(nums[j] - nums[i]) <= t) return ...
字符串的最大公因子
字符串的最大公因子
对于字符串 s 和 t,只有在 s = t + t + t + … + t + t(t 自身连接 1 次或多次)时,我们才认定 “t 能除尽 s”。给定两个字符串 str1 和 str2 。返回 最长字符串 x,要求满足 x 能除尽 str1 且 x 能除尽 str2 。
输入:str1 = “ABCABC”, str2 = “ABC”输出:”ABC”
输入:str1 = “ABABAB”, str2 = “ABAB”输出:”AB”
1234567891011121314151617181920212223242526272829303132333435363738394041var gcdOfStrings = function(str1, str2) { const m=str1.length; const n=str2.length; let t=''; let j=1; let maxlen=0; let str=str1; let min=n if(m<n) ...
计算器
计算器
给定一个包含正整数、加(+)、减(-)、乘(_)、除(/)的算数表达式(括号除外),计算其结果。表达式仅包含非负整数,+, - ,_,/ 四种运算符和空格 。 整数除法仅保留整数部分。
输入: “3+2*2”输出: 7
输入: “ 3/2 “输出: 1
123456789101112131415161718192021222324var calculate = function(s) { let sign = '+', n = 0, c, stack = []; for (let i = 0; i <= s.length; i++) { c = s.charAt(i); if (c === ' ') continue; if (c <= '9' && c >= '0') { n = n * 10 + parseInt(c); co ...
整数的英语表示
整数的英语表示
给定一个整数,打印该整数的英文描述
输入: 123输出: “One Hundred Twenty Three”
输入: 12345输出: “Twelve Thousand Three Hundred Forty Five”
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758var numberToWords = function(num) { const map = ['Zero','One','Two','Three','Four','Five','Six','Seven','Eight','Nine','Ten', 'Eleven', ...
将句子排序
将句子排序
给你一个下标从 0 开始的字符串数组 words 和一个字符 x 。请你返回一个 下标数组 ,表示下标在数组中对应的单词包含字符 x 。注意 ,返回的数组可以是 任意 顺序。
输入:s = “is2 sentence4 This1 a3”输出:”This is a sentence”解释:将 s 中的单词按照初始位置排序,得到 “This1 is2 a3 sentence4” ,然后删除数字。
输入:s = “Myself2 Me1 I4 and3”输出:”Me Myself and I”解释:将 s 中的单词按照初始位置排序,得到 “Me1 Myself2 and3 I4” ,然后删除数字。
123456789101112131415var sortSentence = function(s) { let arr = s.split(' ') // return arr let res = new Array(arr.length) for (let i = 0; i < arr.length; i++ ...
查找包含给定字符的单词
查找包含给定字符的单词
给你一个下标从 0 开始的字符串数组 words 和一个字符 x 。请你返回一个 下标数组 ,表示下标在数组中对应的单词包含字符 x 。注意 ,返回的数组可以是 任意 顺序。
输入:words = [“leet”,”code”], x = “e”输出:[0,1]解释:”e” 在两个单词中都出现了:”leet” 和 “code” 。所以我们返回下标 0 和 1 。
输入:words = [“abc”,”bcd”,”aaaa”,”cbc”], x = “a”输出:[0,2]解释:”a” 在 “abc” 和 “aaaa” 中出现了,所以我们返回下标 0 和 2 。
123456789101112var findWordsContaining = function(words, x) { let ans = [] for(let i = 0; i < words.length; i++){ for(let w of words[i]){ if(w === x){ ...
字母在字符串中的百分比
字母在字符串中的百分比
给你一个字符串 s 和一个字符 letter ,返回在 s 中等于 letter 字符所占的 百分比 ,向下取整到最接近的百分比。
输入:s = “foobar”, letter = “o”输出:33解释:等于字母 ‘o’ 的字符在 s 中占到的百分比是 2 / 6 * 100% = 33% ,向下取整,所以返回 33 。
输入:s = “jjjj”, letter = “k”输出:0解释:等于字母 ‘k’ 的字符在 s 中占到的百分比是 0% ,所以返回 0 。
12345678910var percentageLetter = function(s, letter) { const len = s.length; let count = 0; for (const char of s) { if (char === letter) { count++; } } return Math.floor(count / len ...