zoukankan      html  css  js  c++  java
  • 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;
        }
    };
  • 相关阅读:
    单位根反演学习笔记
    省选模拟测试17
    省选模拟测试16
    省选模拟测试15
    省选模拟测试14
    省选模拟测试13
    P4491 [HAOI2018]染色
    省选模拟测试12
    P4389 付公主的背包
    洛谷P3403
  • 原文地址:https://www.cnblogs.com/dloooooo/p/13754906.html
Copyright © 2011-2022 走看看