掘金团队号上线,助你 Offer 临门! 点击 查看详情 (opens new window)
# 前言
第一次参加掘金打卡活动,别的不说 主要是奔着奖励来的。4.12开始为了达到14题小目标 冲冲冲!!!这是第五题
# 题目描述
题目链接:无重复字符的最长子串 (opens new window)
题目描述我用截图leetcode的为主,所以题目如下图
# 思路分析
题目解析:题目的话倒是很简单给出一个字符串,求其最长的无重复连续字符串的长度 思路:先写个判断非空字符串是否重复的方法,如下图
然后把s切割成数组去遍历,得到每次无重复字符串的长度,然后遍历结束得到最大的长度值。
实现如下
点击测试 尴尬了 出现超时 所以是要优化了
一时没想到好的优化方法(挫败),然后选择了百度一下,参考链接 (opens new window)
最后测试通过,搜到了好几个方法去解决的 滑动窗口或者数组+双指针暴力求解之类
# AC 代码
/**
* @param {number[]} nums
* @param {number} target
* @return {number[]}
*/
var lengthOfLongestSubstring = function(s) {
let arr = [];
let m = 0
for(let i = 0; i < s.length; i++) {
let index = arr.indexOf(s[i])
if(index !== -1) {
arr.splice(0, index+1);
}
arr.push(s[i])
m = Math.max(arr.length, m)
}
return m
};
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# 总结
看完别人的解法感觉自己对算法一无所知,空间复杂度和时间复杂度的优化也不会,学无止境,希望可以养成刷题的习惯 那我相信就会有进步。今天这道是在别人的基础上解决的 多动手,多思考。第五题算法半完成,坚持就是胜利!!!
↓↓↓
↑↑↑
这里可以点!这里可以点!这里可以点!