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;
    }
};

 

posted @ 2020-09-30 15:45  dlooooo  阅读(112)  评论(0编辑  收藏  举报