zoukankan      html  css  js  c++  java
  • c++的算法学习之滑动窗口求最长的无重复的子字符串

    /***
     * 问题:无重复字符的最长子串
     * 方法:滑动数组法
     * 主要思想:相当于双指针对撞和二分搜索法一个在左边一个在右边
     * 当数组中出现重复的元素时则将左边的下标向右边移动一位
     * 直到数组中所有的元素都不重复即可
     * 而长度就等于右边的减去左边的
     *
    */
    
    class Solution {
    private:
        int res=0;
        int p[256]={0};
    public:
        int lengthOfLongestSubstring(string s) {
            int left=0;
            int right=-1;
            while(left<s.size())
            {
                if(right+1<s.size()&&p[s[right+1]]==0)
                    p[s[++right]]++;
                else
                    p[s[left++]]--;
                res=max(res,right-left+1);
            }
            return res;
        }
    };
  • 相关阅读:
    json
    网页版 treeview使用中遇到的问题
    随机获取一条数据
    oracle
    发送邮件
    DataGrid列的合并
    python简介
    SQLSERVER
    Maven 基础
    Maven 构建jar包
  • 原文地址:https://www.cnblogs.com/z2529827226/p/11760063.html
Copyright © 2011-2022 走看看