例如: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是值,今天先这样了。
标签:子串,map,hash,字符,len,unordered,left From: https://www.cnblogs.com/zhangmingmkzj/p/18127475