LeetCode:3 无重复字符的最长子串(双指针)
之前其他oj上刷题刷习惯了,看到题目总是想得复杂了些。第一次刷leetcode,看到题目,差点以为一来就得深搜或者动态规划了,大半年没敲过代码,心里难免是绝望的。读完题发现没那么复杂,可能不是最优解,但也算比较容易ac了。
思路也很简单,用双指针表示滑窗。滑窗不停向后扩展,且滑窗大小始终保持此前最大容量的情况。
class Solution { public: int lengthOfLongestSubstring(string s) { set<char> se; int len = s.length(); int ans=0; int right=0; for(int i=0;i<len;i++){ if(i!=0){ se.erase(s[i-1]); } while(right<len){ if(se.find(s[right])==se.end()){ se.insert(s[right]); right++; } else{ break; } } ans = max(ans,(right-i)); } return ans; } };