专栏名称: 前端亚古兽
研发
目录
相关文章推荐
桂林广播电视台飞扬883  ·  这样洗菜越洗越“脏”,还丢营养!很多人都不知道…… ·  昨天  
海南药闻  ·  体重管理年 你必须要知道的三个减肥细节 ·  昨天  
51好读  ›  专栏  ›  前端亚古兽

【第1期】前端算法精选-字符串系列

前端亚古兽  · 掘金  ·  · 2020-02-25 02:36

正文

阅读 13

【第1期】前端算法精选-字符串系列

很多前端工程师甚至很多研发工程师都缺乏数据结构和算知识,前端算法精选系列是一个针对常见的、高频的算法题做的一个算法解析系列,文章会给出详细的思路和解答,希望可以帮助到你。

无重复字符的最长子串

题目
给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。
示例1:
输入: "abcabcbb"
输出: 3
解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3复制代码
示例2:
输入: "bbbbb"
输出: 1
解释: 因为无重复字符的最长子串是 "b",所以其长度为 1。复制代码
示例3:
输入: "pwwkew"
输出: 3
解释: 因为无重复字符的最长子串是 "wke",所以其长度为 3。
     请注意,你的答案必须是 子串 的长度,"pwke" 是一个子序列,不是子串。复制代码
解法
先看一下这道题的要求,它要求返回一个字符串中无重复字符的最大子串长度,时间复杂度和空间复杂度要求尽可能的低,有以下的思路
既然是最大子串的长度,首先最明显的思路就是维护一个最大不重复子串的变量和最大长度的变量。比如对于 “abcabcbb” 来说,维护一个cur来存当前最大不重复子串、max维护最大长度,那么就有以下过程:
  1. 遍历到a,此时cur='',不包含'a',所以cur=cur+'a'='a';cur长度为1大于max的初始值0,所以更新max=1;
  2. 遍历到b,此时cur='a',不包含'b',所以cur=cur+'b'='ab';cur长度为2大于max,所以更新max=2;
  3. 遍历到c,此时cur='ab',不包含'c',所以cur=cur+'c'='abc',cur长度为3大于max,所以更新max=3;






请到「今天看啥」查看全文