题目描述 - 无重复字符的最长子串
给定一个字符串 s
,找出其中不含有重复字符的 最长子串 的长度。
如:
s = "abcabcbb"
,输出: 3 ,无重复字符的最长子串是 "abc"。s = "bbbbb"
,输出: 1 ,无重复字符的最长子串是 "b"。s = "pwwkew"
,输出: 3 ,无重复字符的最长子串是 "wke"。
思路分析
最简单的思路就是循环遍历所有元素,根据对象键值唯一性的特点,维护一个字符串中唯一元素的字典表,动态计算其长度,循环完成,得到最长字符串。
代码实现:
/**
* @param {string} s
* @return {number}
*/
var lengthOfLongestSubstring = function(s) {
let count = 0
if(!s) return count
for(let i=0; i<s.length; i++){
let obj = {} // 字符串中唯一元素
let max = 0
let j=i
while(j<s.length){
let item = s[j]
// 如果字典表中不存在该元素 则 唯一
if(!obj[item]){
obj[item] = 1
max++
j++
}else{
// 如果字典表中有该元素 碰到了重复元素 循环终止
break
}
}
count = Math.max(count, max)
}
return count
};