leetcode刷题记录——字符串

177 阅读2分钟

javascript刷题顺序按照[Leetcode分类顺序表](挂了。。现在就哪里不会刷哪里)(cspiration.com/leetcodeCla…) 👑->VIP题目

字符串

× 28. 实现 strStr()

这题应该要用KMP算法,但我现在还不会,先暴力试试。

var strStr = function(haystack, needle) {
    return haystack.indexOf(needle);
};

最简便的办法了,js的函数还是要多学一些。

√ 14. 最长公共前缀

√ 58. 最后一个单词的长度

我用的办法比较麻烦,split。。。看了题解,醍醐灌顶。while循环去除末尾空格。

√ 387. 字符串中的第一个唯一字符

includesslice

√ 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. 字母异位词分组

不会先跳过 模式识别:一旦需要根据特征进行归类,就该利用散列表。

👑 249. 移位字符串分组

× 87. 扰乱字符串