zoukankan      html  css  js  c++  java
  • leetcode-滑动窗口

    给定一个字符串 s ,请你找出其中不含有重复字符的 最长子串 的长度。

    输入: s = "abcabcbb"
    输出: 3 
    解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。

    解题思路:使用两个指针作为窗口的两个边界,每进行一步操作,左指针就向右移动一个位置。右指针是窗口的又边界,判断下一个字符在set集合中的个数,如果个数为0,则将这个字符添加到set集合中,最后计算左指针和右指针之间字符的个数,选取最大值。

    class Solution {
    public:
        int lengthOfLongestSubstring(string s) {
            unordered_set<char> occ;
            int n=s.size();
            int rk=-1;
            int ans=0;
            for(int i=0;i<n;i++){
                if(i!=0){
                    occ.erase(s[i-1]);
                }
                while(rk+1<n && occ.count(s[rk+1])==0){
                    occ.insert(s[rk+1]);
                    rk++;
                }
                ans=max(ans,rk-i+1);
            }
            return ans;
          
        }
    };
  • 相关阅读:
    Python 简单总结
    Python 简单总结
    Python 简介
    Python基础题
    Python基础题
    tDQSS
    parameter–precharge, tRCD and tRAS
    parameter–key parameters
    parameter -- tWR
    命令集
  • 原文地址:https://www.cnblogs.com/zhang12345/p/15341681.html
Copyright © 2011-2022 走看看