课程名称:2周刷完100道前端优质面试真题
课程章节:第3章 前端面试技能拼图1: 数据结构和算法(下),大厂面试必考
主讲老师:双越
课程内容:
今天学习的内容包括:
3-10 获取字符串中连续最多的字符以及次数-使用嵌套循环——使用跳步实现时间复杂度为O(n)。
课程收获:
字符串中连续最多的字符,以及次数
- 如,输入‘abbcccddeeee1234’,计算得到:
- 连续最多的字符是’e’,4次
传统思路
- 嵌套循环,找出每个字符的连接次数,并记录
- 看似时间复杂度是O(n^2)
- 但实际时间复杂度是多少?———O(n),因为有“跳步”
if (tempLength > res.length) {
res.char = str[i]
res.length = tempLength
}
if (i < length - 1) {
i = j - 1 // 跳步
}
tips
- 跳步感觉类似指针,实现结果跟指针是一样的,不过这个方法要比双指针容易理解的多
- 跳步需要考虑到不能跳出字符串以外
- 因为for循环是累加的,所以跳步需要 -1
今天的 学习了 使用嵌套循环加跳步 - 获取字符串中连续最多的字符以及次数,时间复杂度从O(n^2)成为O(n),提升非常明显。
下一步就是 学习 获取字符串中连续最多的字符以及次数-使用双指针。今天学习就先到这里吧。
坚持打卡,坚持学习,未来可期,加油😀~