title: 无重复字符的最长子串
date: 2019-09-02 16:30:00
categories:

  • 力扣一题
    tags:
  • JavaScript
  • 算法

题目描述

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

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

示例2:

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

示例3:

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

我的解法

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

最优解

记录

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