Поиск подстроки с уникальными символами
Описание задачи: Дана строка s
. Необходимо найти самую длинную подстроку, которая содержит только уникальные символы. Вернуть длину этой подстроки.
Входные данные:
s
- строка, состоящая из строчных латинских букв (например, "abcabcbb").Выходные данные:
Вход: "abcabcbb"
Выход: 3
Вход: "bbbbb"
Выход: 1
Вход: "pwwkew"
Выход: 3
Условия:
Подсказка: Для решения задачи можно использовать скользящее окно и хэш-таблицу (или множество) для отслеживания уникальных символов.
fun lengthOfLongestSubstring(s: String): Int {
val n = s.length
var maxLength = 0
var left = 0
val charSet = mutableSetOf<Char>()
for (right in 0 until n) {
while (charSet.contains(s[right])) {
charSet.remove(s[left])
left++
}
charSet.add(s[right])
maxLength = maxOf(maxLength, right - left + 1)
}
return maxLength
}
fun main() {
println(lengthOfLongestSubstring("abcabcbb")) // Output: 3
println(lengthOfLongestSubstring("bbbbb")) // Output: 1
println(lengthOfLongestSubstring("pwwkew")) // Output: 3
}