title: 无重复字符的最长子串
date: 2019-09-02 16:30:00
categories:
- 力扣一题
tags: - JavaScript
- 算法
题目描述
给定一个字符串,请找出其中不含有重复字符的最长子串的长度。
示例1:
输入: "abcabcbb"输出: 3解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。
示例2:
输入: "bbbbb"输出: 1解释: 因为无重复字符的最长子串是 "b",所以其长度为 1。
示例3:
输入: "pwwkew"输出: 3解释: 因为无重复字符的最长子串是 "wke",所以其长度为 3。请注意,你的答案必须是 子串 的长度,"pwke" 是一个子序列,不是子串。
我的解法
/*-> 🌑字符串转字符数组-> 🌒按照子串长度进行排列组合-> 🌓检测每一个子串是否有重复字符-> 🌔找出最长的字符*/(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/
