

int lengthOfLongestSubstring(string s) {
unordered_set<char> cs;
size_t n = s.size();
int* num = new int[n];
int start = 0;
for (int i = 0; i < n; i++) {
if (start < n && cs.count(s[start])) {
num[i] = cs.size();
cs.erase(cs.begin(), cs.find(s[start]));
cs.erase(s[start]);
}
if (start < n && !cs.count(s[start])) {
cs.insert(s[start]);
start++;
}
}
return *max_element(num,num+n)<cs.size()? cs.size(): *max_element(num,num+n);
}