外贸公司网站开发步骤,供求信息平台,荆州网站开发,wordpress搭建微信小程序个人主页#xff1a;Lei宝啊
愿所有美好如期而遇 力扣#xff08;LeetCode#xff09;官网 - 全球极客挚爱的技术成长平台备战技术面试#xff1f;力扣提供海量技术面试资源#xff0c;帮助你高效提升编程技能#xff0c;轻松拿下世界 IT 名企 Dream Offer。https://le…个人主页Lei宝啊
愿所有美好如期而遇 力扣LeetCode官网 - 全球极客挚爱的技术成长平台备战技术面试力扣提供海量技术面试资源帮助你高效提升编程技能轻松拿下世界 IT 名企 Dream Offer。https://leetcode.cn/problems/wtcaE1/
算法原理
滑动窗口其实就是种双指针只是这种双指针只向后移动不会回退具有单调性也就是说整个过程中left和right只会。
我们定义left和right为0以及一个hash数组将我们遍历过的字母全部填入并且检测是否有超过1的如果有那么从left开始走的字母全部出hash表直到超过1的那个字母不再超过1我们看图解。
图示 以此类推不再往下画。
代码
class Solution {
public:int lengthOfLongestSubstring(string s) {int hash[128] {0};int len 0;for(int right 0, left 0; right s.size(); right){hash[s[right]];for(int i0; i128; i){if(hash[i] 1){ while(hash[i] ! 1) { hash[s[left]]--;}}}len max(len, right-left1);}return len; }
};