# 👉 字符串数组相关
# 滑动窗口
滑动窗口、快慢指针、双指针区别
- 双指针是常规解法,通常和排序相结合,达到𝑂(𝑛^2)变为O(n)的效果
- 快慢指针,一般是特定题目(找环,找中点等等),快慢指针通常比较巧妙
- 滑动窗口,基本都是字符串的子串问题,因为子串需要连续,导致我们的结果取自字符串的一段,类似于窗口
截取字符串的方法
- substring:不修改原字符串,第二个参数表示结束位置-1,第二个参数可选
const str = 'hello world'; // 从索引1到4,不包含4 console.log(1,4); // ell // 从索引1到结尾 console.log(1) // ello world // 参数会自动调整顺序 console.log(str.substring(4, 1)); // "ell"(等同于substring(1, 4))
- slice:不修改原字符串,支持负数起始索引(常用)
const str = 'hello world'; // 从索引1到4(不包含4) console.log(str.slice(1, 4)); // "ell" // 从索引1到末尾 console.log(str.slice(1)); // "ello World" // 负数索引(从末尾开始计数) console.log(str.slice(-5)); // "World" console.log(str.slice(-5, -1)); // "Worl"
- substr:不修改原字符串,第二个参数表示长度,支持负数起始索引
# 反转字符串
# 回文字符串
# 正则表达式子
# 判断是否是电话号码
function isPhone(phone) {
// ^x表示以x开头,$表示结尾,[xyz]表示xyz中的任意一个,{n}表示重复n次
const phoneReg = /^1[35789]\d{9}$/;
return phoneReg.test(phone);
}
# 验证是否是邮箱
function isEmail(email) {
const emailReg = //;
return emailReg.test(email);
}
# 验证是否是身份证
function isEmail(email) {
const emailReg = //;
return emailReg.test(email);
}
# 解析 URL
# 解析 URL Params 为对象
- 获取 url 中的参数:
- 指定参数名称,返回该参数的值 或者 空字符串
- 不指定参数名称,返回全部的参数对象 或者 {}
- 如果存在多个同名参数,则返回数组
- decodeURIComponent 对中文解码
# 查找字符串中出现最多的字符和个数
# 模板引擎实现
实现效果:
let template = "我是{{name}},年龄{{age}},性别{{sex}}";
let data = {
name: "姓名",
age: 18,
};
render(template, data); // 我是姓名,年龄18,性别undefined