无重复字符的最长子串

题目描述

给定一个字符串,请找出其中不含有重复字符的最长子串的长度。

示例1:

1
2
3
输入: "abcabcbb"
输出: 3
解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。

示例2:

1
2
3
输入: "bbbbb"
输出: 1
解释: 因为无重复字符的最长子串是 "b",所以其长度为 1。

示例3:

1
2
3
4
输入: "pwwkew"
输出: 3
解释: 因为无重复字符的最长子串是 "wke",所以其长度为 3。
  请注意,你的答案必须是 子串 的长度,"pwke" 是一个子序列,不是子串。

我的解法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
/*
-> 🌑字符串转字符数组
-> 🌒按照子串长度进行排列组合
-> 🌓检测每一个子串是否有重复字符
-> 🌔找出最长的字符
*/
(function main() {
let str = 'pwwkew';
var lengthOfLongestSubstring = function(s) {
let arr = s.split('');
let num = 0;
let length = arr.length;
for (let grade = 1; grade <= length + 1; grade ++) {
for (let position = 0; position <= length - grade; position ++) {
let storeArr = arr.slice(position, position + grade);
let storeStr = storeArr.join('');
// console.log('grade -> '+ grade + ' position -> ' + position)
console.log(storeStr)

if (storeArr.length > num && /([a-zA-Z])[a-zA-Z]*\1/.test(storeStr)) {
num = storeArr.length;
}
}
}
return num;
};
console.log(lengthOfLongestSubstring(str))
}());
// 【还未完成】

最优解

记录

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/longest-substring-without-repeating-characters/

推荐文章