LeetCoder 3. Longest Substring Without Repeating Characters
来源:互联网 发布:知乎怎么发图片文章 编辑:程序博客网 时间:2024/05/21 08:03
题意
求一个字符串的最长连续不重复子串
思路
解法一
暴力,两层循环枚举起点和终点,一层循环判断这段字符串中是否存在重复的字符,时间复杂度
解法二
尺取法,设置左右两个指针,右指针不断向前移动直到出现重复的字符,出现重复字符之后,左指针开始前进,直到找到那个重复的字符并越过,然后继续,中间记录最长的连续不重复子串长度,时间复杂度
解法三
使用一个
结果
Your runtime beats 33.07% of cpp submissions.
代码
解法二:
class Solution {public: map<int, int>vis; int lengthOfLongestSubstring(string s) { vis.clear(); int l = 0; int r = 0; int len = s.length(); int cnt = 0; int ans = 0; while(1){ int flag = 0; if(cnt != 0){ cnt--; vis[s[r] - 'a']--; } while(flag == 0 && r < len){ if(vis[s[r] - 'a'] != 0){ vis[s[r] - 'a']++; flag = 1; break; } vis[s[r] - 'a'] = 1; r++; cnt++; } ans = cnt > ans ? cnt : ans; if(l >= r || flag == 0){ break; } while(flag != 0 && l <= r){ if(vis[s[l] - 'a'] != 1){ flag = 0; } vis[s[l] - 'a']--; l++; if(flag != 0) cnt--; } } return ans; }};
解法三:
class Solution {public: int mp[300]; int lengthOfLongestSubstring(string s) { int len = s.length(); int startLoc = -1; int ans = 0; for(int i = 0; i < 300; i++){ mp[i] = -1; } for(int i = 0 ; i < len; i++){ startLoc = max(startLoc, mp[s[i]] + 1); mp[s[i]] = i; ans = max(ans, i - startLoc + 1); } return ans; }};
0 0
- LeetCoder 3. Longest Substring Without Repeating Characters
- [LeetCode]3.Longest Substring Without Repeating Characters
- LeetCode 3.Longest Substring Without Repeating Characters
- LeetCode --- 3. Longest Substring Without Repeating Characters
- 3.Longest Substring Without Repeating Characters
- [Leetcode] 3. Longest Substring Without Repeating Characters
- 3.Longest Substring Without Repeating Characters
- 3. Longest Substring Without Repeating Characters
- 3.Longest Substring Without Repeating Characters
- 3.Longest Substring Without Repeating Characters
- 3.Longest Substring Without Repeating Characters
- 3. Longest Substring Without Repeating Characters
- [leetcode] 3.Longest Substring Without Repeating Characters
- 3.Longest Substring Without Repeating Characters
- [leetcode] 3. Longest Substring Without Repeating Characters
- 3. Longest Substring Without Repeating Characters
- [Leetcode]3. Longest Substring Without Repeating Characters
- leetcode 3. Longest Substring Without Repeating Characters
- ZOJ 3958 Cooking Competition
- 字体
- 如何在 webpack 中引入未模块化的库,如 Zepto
- 题目1368:二叉树中和为某一值的路径
- mac osx系统中python的libsvm配置
- LeetCoder 3. Longest Substring Without Repeating Characters
- 行距和对齐方式
- uboot的环境变量
- mina3源码分析,回话过程创建(二)
- STM8入门资源
- LBP特征 旋转不变 标准型 圆型 及其在人脸识别中的应用含代码
- formValidator辅助函数
- 常见的查找
- datetime.datetime.strptime:万能的日期格式转换