例如:abcadfee

计算结果为3,即abc或adf

这里定义一个unordered_map<char,int> 的哈希表,键为字符,值为该字符的下标

int left=0,len=0;

for(int i=0;i<s.length();i++){

char c=str[i];

if(hash.count(c)){

len=max(len,i-left);//计算最大长度

left=max(left,hash[c]+1);//就算左指针的下一个位置

}

//出现字符就记录

hash[c]=i;

}

//最后一个字符也要记录

len=max(len,i-left);

 

这里再总结map中的count,find的区别,count是返回1,0找到还是没有找到,find是返回迭代器得用auto接收指向second是值,今天先这样了。