tip: 在VS Code中有一个插件——code runner,可以安装后直接运行在node 环境中,然后在vscode中输出文件的结果。
替换空格
题目描述 简单
请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。
方法一:正则
1 | function replaceSpace(str) |
方法二:切片再聚合
1 | function replaceSpace(str) |
正则表达式匹配
题目描述 困难
请实现一个函数用来匹配包括’.’和’*‘的正则表达式。模式中的字符’.’表示任意一个字符,而’*‘表示它前面的字符可以出现任意次(包含0次)。 在本题中,匹配是指字符串的所有字符匹配整个模式。例如,字符串”aaa”与模式”a.a”和”ab\ac\a”匹配,但与”aa.a”和”ab*a”均不匹配
1 | //s, pattern都是字符串 |
总结:思路来自于牛客网讨论区题解
链接:https://www.nowcoder.com/questionTerminal/45327ae22b7b413ea21df13ee7d6429c?f=discussion
当模式中的第二个字符不是“*”时:
1、如果字符串第一个字符和模式中的第一个字符相匹配,那么字符串和模式都后移一个字符,然后匹配剩余的。
2、如果 字符串第一个字符和模式中的第一个字符相不匹配,直接返回false。
而当模式中的第二个字符是“*”时:
如果字符串第一个字符跟模式第一个字符不匹配,则模式后移2个字符,继续匹配。如果字符串第一个字符跟模式第一个字符匹配,可以有3种匹配方式:
1、模式后移2字符,相当于x*被忽略;
2、字符串后移1字符,模式后移2字符;
3、字符串后移1字符,模式不变,即继续匹配字符下一位,因为*可以匹配多位;
表示数值的字符串
题目描述 中等
请实现一个函数用来判断字符串是否表示数值(包括整数和小数)。例如,字符串”+100”,”5e2”,”-123”,”3.1416”和”-1E-16”都表示数值。 但是”12e”,”1a3.14”,”1.2.3”,”+-5”和”12e+4.3”都不是。
1 | //s字符串 |
总结:正则相关知识点复习
- 开头符
^和 结尾符$界定待匹配字符串的界限; [+-]?匹配字符串开头的正负号,可正可负,也可以没有正负号;\d*\.?\d+表示数字部分,\d为匹配[0-9]的数字*表示0次或多次+表示至少1次(\[e][+-]?\d+)?表示科学计数法,可有可无;- JavaScript中可以给正则表达式设置
i标识,以忽略匹配规则中的大小写。
字符流中第一个不重复的字符
题目描述
请实现一个函数用来找出字符流中第一个只出现一次的字符。例如,当从字符流中只读出前两个字符”go”时,第一个只出现一次的字符是”g”。当从该字符流中读出前六个字符“google”时,第一个只出现一次的字符是”l”。
1 | function Init() |
总结:遍历
for循环–array
for…in –Object
for…of –一切可遍历的元素(数组、对象、集合)等
for…of 语句创建一个循环来迭代可迭代的对象。在 ES6 中引入的 for…of 循环,以替代 for…in 和 forEach() ,并支持新的迭代协议。for…of 允许你遍历 Arrays(数组), Strings(字符串), Maps(映射), Sets(集合)等可迭代的数据结构等。