题目链接:https://leetcode-cn.com/problems/longest-substring-without-repeating-characters/description/
给定一个字符串,找出不含有重复字符的最长子串的长度。
示例:
给定 “abcabcbb” ,没有重复字符的最长子串是 “abc” ,那么长度就是3。
给定 “bbbbb” ,最长的子串就是 “b” ,长度是1。
给定 “pwwkew” ,最长子串是 “wke” ,长度是3。请注意答案必须是一个子串,”pwke” 是 子序列 而不是子串。
因为不会写代码,所以要多多编程。
解析:题目不是特别难,但是还是思考了一下,想了下办法就是使用暴力去解决(菜鸟),两重循环,从第i( 0<= i <= n-1)个字符串,在第j个(i+1<= j <= n-1)后续字符串中遍历, 在遇到重复的字符串就记录当前的长度,没有需要重复的字符串就j++继续下去,然后从第i++重新开始循环
js代码部分:
var lengthOfLongestSubstring = function(s) {
var res = 0, str = "", num = 0
for( let i = 0; i<s.length; i++){
str += s[i]
num++;
for(let j = i+1; j<s.length; j++){
// str += s[j]
// console.log(str)
if( str.indexOf(s[j]) === -1 ){
str += s[j]
num++;
if(num > res){
res = num;
}
if(j === s.length-1){
return res
}
}else{
str = ""
num = 0
break
}
}
if(num > res){
res = num;
}
}
return res
};
代码实在是写得不好看,可能思路也不是很清晰,后面会优化这个算法。后面再来补充。