leetcode五月每日一题 leetcode3

leetcode五月每日一题 leetcode3_第1张图片
leetcode五月每日一题 leetcode3_第2张图片
我是利用滑动窗口来做的

class Solution {
public:
    int lengthOfLongestSubstring(string s){

        int len = 0;
        int first=0,end=0; //在[a..b)中判断 end指向要判断的元素
        int n = s.size();

        int judge[256] = {0} ; //这里用122错过

        while(end < n){
            if( judge[s[end]] == 0 ){
                judge[s[end]] ++;
                end ++;
            }else{
               //len =  len > end-first ? len : end-first;
               while(s[first] != s[end] ) //移动的时候还要清空之前的哦
               {
                   judge[s[first]] = 0;
                   first ++;
               }

               first ++;
               end ++;
            }

            len =  len > end-first ? len : end-first;
        }

        return len;

    }

};

自己的失误点如下:
第一个judge数组用了z的ascii码值是不够的,要兼顾其他特殊字符
len = len > end-first ? len : end-first;这句话的位置,其实在每一款改变了滑动窗口的时候都要判断一下,而不是说只有碰到相同的字母需要滑动窗口的时候才去修改
在修改滑动窗口时,之前的在judge索引中的相应项要消除为0

你可能感兴趣的:(leetcode)