整数的英语表示
整数的英语表示
给定一个整数,打印该整数的英文描述
输入: 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 ...
包含所有三种字符的子字符串数目
包含所有三种字符的子字符串数目
给你一个字符串 s ,它只包含三种字符 a, b 和 c 。请你返回 a,b 和 c 都 至少 出现过一次的子字符串数目。
输入:s = “abcabc”输出:10解释:包含 a,b 和 c 各至少一次的子字符串为 “abc”, “abca”, “abcab”, “abcabc”, “bca”, “bcab”, “bcabc”, “cab”, “cabc” 和 “abc” (相同字符串算多次)。
输入:s = “aaacb”输出:3解释:包含 a,b 和 c 各至少一次的子字符串为 “aaacb”, “aacb” 和 “acb” 。
12345678910111213141516171819202122var numberOfSubstrings = function(s) { let hash = { a: 0, b: 0, c: 0 } let arr = s.split('') let count = 0 let le ...
两个相同字符之间的最长子字符串
两个相同字符之间的最长子字符串
给你一个字符串 s,请你返回 两个相同字符之间的最长子字符串的长度 ,计算长度时不含这两个字符。如果不存在这样的子字符串,返回 -1 。子字符串 是字符串中的一个连续字符序列。
输入:s = “aa”输出:0解释:最优的子字符串是两个 ‘a’ 之间的空子字符串。
输入:s = “abca”输出:2解释:最优的子字符串是 “bc” 。
s 是一个半重复字符串。
1234567891011121314var maxLengthBetweenEqualCharacters = function(s) { let m = new Map(); for (let i=0; i<s.length; i++) { if (!m.has(s[i])) m.set(s[i], [i]); else m.get(s[i])[1] = i; } let res = -1; for (let v of m.values()) { if (v.lengt ...
找到最长的半重复子字符串
找到最长的半重复子字符串
给你一个下标从 0 开始的字符串 s ,这个字符串只包含 0 到 9 的数字字符。如果一个字符串 t 中至多有一对相邻字符是相等的,那么称这个字符串 t 是 半重复的 。例如,”0010” 、”002020” 、”0123” 、”2002” 和 “54944” 是半重复字符串,而 “00101022” (相邻的相同数字对是 00 和 22)和 “1101234883” (相邻的相同数字对是 11 和 88)不是半重复字符串。请你返回 s 中最长半重复子字符串的长度。
输入:s = “52233”输出:4解释:最长的半重复子字符串是 “5223”。整个字符串 “52233” 有两个相邻的相同数字对 22 和 33,但最多只能选取一个。
输入:s = “5494”输出:4解释:
s 是一个半重复字符串。
1234567891011121314151617181920var longestSemiRepetitiveSubstring = function(s) { const n = s.length let i = 0 le ...
字符串及其反转中是否存在同一子字符串
字符串及其反转中是否存在同一子字符串
给你一个字符串 s ,请你判断字符串 s 是否存在一个长度为 2 的子字符串,在其反转后的字符串中也出现。如果存在这样的子字符串,返回 true;如果不存在,返回 false 。
输入:s = “leetcode”输出:true解释:子字符串 “ee” 的长度为 2,它也出现在 reverse(s) == “edocteel” 中。
输入:s = “abcba”输出:true解释:所有长度为 2 的子字符串 “ab”、”bc”、”cb”、”ba” 也都出现在 reverse(s) == “abcba” 中。
12345678910111213var isSubstringPresent = function(s) { let i let tmp = s.split('').reverse().join('') for(i = 0;i < s.length-1;i ++){ let cur = s[i] + s[i+1] //假设为AB ...
移除指定数字得到的最大结果
移除指定数字得到的最大结果
给你一个表示某个正整数的字符串 number 和一个字符 digit 。从 number 中 恰好 移除 一个 等于 digit 的字符后,找出并返回按 十进制 表示 最大 的结果字符串。生成的测试用例满足 digit 在 number 中出现至少一次。
输入:number = “123”, digit = “3”输出:”12”解释:”123” 中只有一个 ‘3’ ,在移除 ‘3’ 之后,结果为 “12” 。
输入:number = “1231”, digit = “1”输出:”231”解释:可以移除第一个 ‘1’ 得到 “231” 或者移除第二个 ‘1’ 得到 “123” 。由于 231 > 123 ,返回 “231” 。
123456789101112131415161718192021var removeDigit = function(number, digit) { let ans = '', del = false; for (let i = 0; i < number.length ...
字符串解码
字符串解码
给定一个经过编码的字符串,返回它解码后的字符串。编码规则为: k[encoded_string],表示其中方括号内部的 encoded_string 正好重复 k 次。注意 k 保证为正整数。你可以认为输入字符串总是有效的;输入字符串中没有额外的空格,且输入的方括号总是符合格式要求的。此外,你可以认为原始数据不包含数字,所有的数字只表示重复的次数 k ,例如不会出现像 3a 或 2[4] 的输入。
输入:s = “3[a]2[bc]”输出:”aaabcbc”
输入:s = “3[a2[c]]”输出:”accaccacc”
123456789101112131415161718192021222324var decodeString = function(s) { let numStack = []; let strStack = []; let ans = ""; let count = 0; for (let i = 0; i < s.length; i++) { let ...