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