Получена строка s.
Нужно найти длину самой длинной подстроки без повторяющихся символов.
Входные данные: s = “abcabcbb”
Результат: 3
Пояснение: Подстрока – “abc”, длина которой равна 3.
Входные данные: s = “bbbbb”
Результат: 1
Пояснение: Подстрока – “b”, длина которой равна 1.
Входные данные: s = “pwwkew”
Результат: 3
Пояснение: Ответ – “wke”, длина которого равна 3. Обратите внимание, что ответ должен быть подстрокой, “pwke” – это подпоследовательность, а не подстрока.
class Solution {
public:
int lengthOfLongestSubstring(string s) {
int windowStart = 0;
int maxLength = 0;
unordered_map<char, int> charmap;
char rightchar;
for (int windowEnd = 0; windowEnd < (int)s.size(); windowEnd++) {
rightchar = s[windowEnd];
if (charmap.find(rightchar) != charmap.end()) {
windowStart = max(windowStart, charmap[rightchar] + 1);
}
charmap[rightchar] = windowEnd;
maxLength = max(maxLength, windowEnd - windowStart + 1);
}
return maxLength;
}
};