leetcode T3 无重复字符的最长子串详解
Posted xiaoxxmu
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了leetcode T3 无重复字符的最长子串详解相关的知识,希望对你有一定的参考价值。
无重复字符的最长子串
题目描述
给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。
示例:
示例?1:
输入: "abcabcbb"
输出: 3
解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。
示例 2:
输入: "bbbbb"
输出: 1
解释: 因为无重复字符的最长子串是 "b",所以其长度为 1。
示例 3:
输入: "pwwkew"
输出: 3
解释: 因为无重复字符的最长子串是?"wke",所以其长度为 3。
? 请注意,你的答案必须是 子串 的长度,"pwke"?是一个子序列,不是子串。
详细题解
滑动窗口
滑动窗口实际是一个双端队列,队列中维护一个可行解,遍历时将新的元素从队列右端插入,判断新插入元素之后队列是否依旧是可行解,如果是,则继续,如果不是,则将左端的元素出列,直到队列中的元素成为一个新的可行解。
如何判断队列中的元素是否是一个可行解呢?本题中可以使用一个256元素visit数组来表示当前队列中的元素,当新插入的元素已经存在时,则不是一个可行解。
int lengthOfLongestSubstring(char * s)
{
bool visit[256] = {0};
int result = 0;
int i = 0;
int j = 0;
if (!s) {
return 0;
}
for (i = 0; '