中级算法3. 无重复字符的最长子串
Posted mikemeng
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了中级算法3. 无重复字符的最长子串相关的知识,希望对你有一定的参考价值。
题目:
给定一个字符串,找出不含有重复字符的最长子串的长度。 示例: 给定 "abcabcbb" ,没有重复字符的最长子串是 "abc" ,那么长度就是3。 给定 "bbbbb" ,最长的子串就是 "b" ,长度是1。 给定 "pwwkew" ,最长子串是 "wke" ,长度是3。请注意答案必须是一个子串,"pwke" 是 子序列 而不是子串。
解题:
class Solution { public: int lengthOfLongestSubstring(string s) { vector<int> visited(256,-1); int res = 0; int tmp = 0; for(int i = 0;i < s.size(); ++i){ if(visited[s[i]] == -1){ tmp++; visited[s[i]] = i; }else{ res = max(tmp,res); int next = i - visited[s[i]]; for(int j = i-tmp;j <= visited[s[i]]; ++j){ visited[s[j]] = -1; } tmp = next; visited[s[i]] = i; } } res = max(res,tmp); return res; } };
以上是关于中级算法3. 无重复字符的最长子串的主要内容,如果未能解决你的问题,请参考以下文章
每日算法/刷穿 LeetCode3. 无重复字符的最长子串(中等)
3. 无重复字符的最长子串(LeetCode力扣算法 - java / rust)