版权声明:本文为博主原创文章,未经博主允许不得转载https://blog.csdn.net/QQlaowang/article/details/82352698
题目:
给定一个字符串,找出不含有重复字符的最长子串的长度。
示例 1:
输入: "abcabcbb"
输出: 3
解释: 无重复字符的最长子串是 "abc",其长度为 3。
示例 2:
输入: "bbbbb"
输出: 1
解释: 无重复字符的最长子串是 "b",其长度为 1。
示例 3:
输入: "pwwkew"
输出: 3
解释: 无重复字符的最长子串是 "wke",其长度为 3。
请注意,答案必须是一个子串,"pwke"
是一个子序列 而不是子串
分析:2个for循环暴力解决
var lengthOfLongestSubstring = function(s) {
var length=1;
var arr=[];
if(!s)return 0//如果是空字符串就返回0
for(i=0;i<s.length;i++){
for(j=i+1;j<s.length;j++){
if(arr.length==0)arr.push(s.charAt(i))//添加子串第一个字符
if(isRepeat(s,j,arr)){//判断子串有没有重复字符
arr.push(s.charAt(j))
}
else{
if(arr.length>length){
length=arr.length;
}
arr=[];
break//跳出for循环,优化算法
}
}
}
if(arr.length>length){
length=arr.length;
}//如果最长子串的最后一位是字符的最后一位,上面算法
//没有计算,现在加上这个情况
return length//返回最长子串长度
function isRepeat(s,j,arr){
var l=s.charAt(j)
for(var k=0;k<arr.length;k++){
if(l==arr[k]){
return false
}
}
return true;
}
};