题目描述
给定一个字符串,请你找出其中不含有重复字符的最长子串的长度。
示例 1:
输入: s = "abcabcbb" 输出: 3 解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。 示例 2:
输入: s = "pwwkew" 输出: 3 解释: 因为无重复字符的最长子串是 "wke",所以其长度为 3。 请注意,你的答案必须是 子串 的长度,"pwke" 是一个子序列,不是子串。 示例 4:
输入: s = "" 输出: 0 提示,0 <= s.length <= 5 * 104,s 由英文字母、数字、符号和空格组成
解法一,暴力破解
javascript
var lengthOfLongestSubstring = function(s) {
if (s.length === 0) return 0
if (s.length === 1) return 1
let allStr = []
for (let i = 0; i < s.length; i++) {
for (let j = i + 1; j < s.length; j++) {
allStr.push(s.substring(i,j))
}
}
let answerArr = []
allStr.forEach(e => {
let hashMap = {}
Array.prototype.forEach.call(e, (d) => {
if (hashMap[d]) {
hashMap[d] += hashMap[d]
} else {
hashMap[d] = 1
}
})
if (Object.values(hashMap).every(e => {return e === 1})) {
answerArr.push(e.length)
}
})
return answerArr.sort((a,b) => {return b - a})[0]
};