??给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。
??使用一个队列用来记录长度,然后使用一个集合用来计算长度和查重。
class Solution {
public:
int lengthOfLongestSubstring(string s) {
int maxlen=0; //记录最大长度
set<char>str; //查询是否出现重复
queue<char>que; //保存没有重复的字符串
str.clear();
for(int i=0;i<s.length();i++){
if(str.count(s[i])) {
maxlen=maxlen>str.size()?maxlen:str.size(); //记录最大长度
while(que.front()!=s[i]){
str.erase(que.front());
que.pop();
}
que.pop();
que.push(s[i]);
}else{
str.insert(s[i]); //插入
que.push(s[i]); //保存
}
}
maxlen=maxlen>str.size()?maxlen:str.size(); //记录最大长度
return maxlen;
}
};
原文:https://www.cnblogs.com/3236676588buladuo/p/14696419.html