61. 最长不含重复字符的子字符串

视频:AcWing 61. 最长不含重复字符的子字符串

 

C++里面的hash表:unordered_map<>

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

        unordered_map<char,int> hash;
        int res=0;
        for(int i=0,j=0;j<s.size();j++)
        {
            hash[s[j]]++;
            //cout<<"i=" <<i<<" "<<"j="<<j<<" "<< "s[j]="<<s[j]<<" "<<"hash[s[j]]="<<hash[s[j]]<< endl;
            while(hash[s[j]]>1)//j当前指向数字与前面的有重复
            {
                /*把i位置上的字母删掉,并把i向后移动一位。下面一句代码实现这两个功能*/
                //cout<<"i="<<i<<" "<< "s[i]="<<s[i]<<" "<<"hash[s[i]]=" <<hash[s[i]]<< endl;
                hash[s[i]]--;//把i位置上这字母s[i]从hash表中删掉。//例子:j=i--; 表示i先赋值给j,然后i在执行i=i-1;
                //cout<<"i="<<i<<" "<< "s[i]="<<s[i]<<" "<<"hash[s[i]]=" <<hash[s[i]]<< endl;
                i++;
                //执行完i++后,i向后移动一位,使得新的i到j之间所有字母只出现一次
            }
            
            res=max(res,j-i+1);
            //cout<<"res=" <<res<< endl;
        }
        return res;

  }
};

带女朋友搬家新家条件不好,累到女朋友了,让女朋友受苦了,特此明志:每天学习,明年这个时候(20190812)让女朋友住上大房子,永远年轻,永远热泪盈眶,很多人都是这样,他们都把自己当成身在梦中一样,浑浑噩噩地过日子,只有痛苦或爱或危险可以让他们重新感到这个世界的真实。
原文地址:https://www.cnblogs.com/make-big-money/p/12329332.html