javascript刷题顺序按照[Leetcode分类顺序表](挂了。。现在就哪里不会刷哪里)(cspiration.com/leetcodeCla…) 👑->VIP题目
字符串
× 28. 实现 strStr()
这题应该要用KMP算法,但我现在还不会,先暴力试试。
var strStr = function(haystack, needle) {
return haystack.indexOf(needle);
};
最简便的办法了,js的函数还是要多学一些。
√ 14. 最长公共前缀
√ 58. 最后一个单词的长度
我用的办法比较麻烦,split。。。看了题解,醍醐灌顶。while循环去除末尾空格。
√ 387. 字符串中的第一个唯一字符
用includes和slice
√ 383. 赎金信
就是从杂志上剪下来拼成赎金欣,所以剪下来的一定不是空字符串。
√ 344. 反转字符串
直接reverse()。官方解法:双指针+解构赋值,就是前后交换位置。
√ 151. 翻转字符串里的单词
涉及到多个空格要变成一个空格:s = s.replace(/\s+/g,' ');。前后有空格也要去掉,可以用length判断。
👑 186. 翻转字符串里的单词II
√ 345. 反转字符串中的元音字母
× 205. 同构字符串
题就没看懂。。。看了答案,使用indexOf
👑 293. 翻转游戏
👑 294. 翻转游戏II
√ 290. 单词规律
和同构字符串思路一致。
√ 242. 有效的字母异位词
先判断字符串长度是否一致;然后把字符串转数组,排序,判断是否一致。
一些新学到的知识
1. [...s]相当于s.split(""),...是js扩展运算符,详情参考JS扩展运算符的用途
2. 解构赋值:解构赋值
3. Eval:执行代码字符串
let value = eval('1+1');
alert(value); // 2
× 49. 字母异位词分组
不会先跳过 模式识别:一旦需要根据特征进行归类,就该利用散列表。