循序渐进,保持空杯
从leetCode学习JavaScript数据结构与基础算法
简单算法:
字符串
、数组
、正则
、排序
、递归
字符串
反转字符串中的单词③
给定一个字符串,需要反转字符串中每个单词的字符顺序,同时仍保留空格和单词的初始顺序
实例:
1 | 输入:"Let's take LeetCode contest" |
注意:在字符串中,每个单词由单个空格分隔,并且字符串中不会有任何额外的空格
1 | /** |
测试用例:
1 | import reverseByWord from '../../code/string/lession1' |
知识点:
String.prototype.split
、String.prototype.match
、Array.prototype.map
、Array.prototype.reverse
、Array.prototype.join
扩展:上面讲的是单个空格隔开,那如果不是当个空格呢?
1 | // 同样可以使用正则的贪婪匹配来解决 |
计数二进制子串
给定一个字符串 s
,计算具有相同数量 0 和 1的非空(连续)子符串的数量,并且这些子字符串中的所有 0 和 1 都是组合在一起的。
重复出现的子串要计算它们出现的次数。
示例:
1 | 输入:"00110011" |
1 | /** |
测试用例:
1 | test('countBinarySubstring(00110011)', () => { |
知识点:
发现规律
,RegExp
数组
电话号码的组合
给定一个仅包含 2-9
的字符串,返回它能表示的字母组合。给出数字到字母的映射如下(与电话按钮相同)。注意1不对应任何字母
1 | 1[] 2[abc] 3[def] |
示例:
1 | 输入: "23" |
说明:上面的答案是按字典排序的,可以任意选择答案输出的顺序
1 | /** |
测试用例:
1 | test('letterCombinations(23)', () => { |
知识点:
公式运算
卡牌分组
给定一副牌,每张牌上都写着一个整数。
此时,需要选定一个数字 x
,使得可以将整部牌按下述规则分成 1 组或者更多:
- 每组都有
x
张牌 - 组内所有的牌上都写着相同的整数
仅当可选的 x>=2
时返回 true
示例:
1 | 输入:[1,2,3,4,4,3,2,1] |
提示:
1 <= deck.length <= 10000
0 <= deck[i] < 10000
知识点:
归并运算
种花问题
知识点:
筛选运算
格雷编码
知识点:
二进制运算