首页 > 其他 > 详细

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

时间:2020-02-19 00:51:40      阅读:62      评论:0      收藏:0      [点我收藏+]

技术分享图片

视频: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;

 

  }
};

 

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

原文:https://www.cnblogs.com/make-big-money/p/12329332.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!