Спасибо) Регулярками можно для разнообразия, но на собеседовании скорее всего будут ждать примерно такое решение, ну и на деле лучше тоже использовать такой вариант, т.к. регулярки тяжелее и добавляют когнитивную нагрузку, на мой взгляд
Да можно, пример будет ниже, но можно еще лучше оптимизировать, вместо "while" использовать "if", если знаете как, то напишите, если нет, но хотите узнать, дайте знать) class Solution: def lengthOfLongestSubstring(self, s: str) -> int: res = 0 left = 0 seen = set() for right in range(len(s)): right_char = s[right] while right_char in seen: left_char = s[left] seen.remove(left_char) left += 1 seen.add(right_char) res = max(res, right - left + 1) return res
Как вариант, можно еще попробовать решить регулярками, это запаристо и знают единицы, но как вариант думаю сойдёт) спасибо за разборы
Спасибо)
Регулярками можно для разнообразия, но на собеседовании скорее всего будут ждать примерно такое решение, ну и на деле лучше тоже использовать такой вариант, т.к. регулярки тяжелее и добавляют когнитивную нагрузку, на мой взгляд
@@idsulik полностью согласен, просто как вариант решения)
спасибо большое автору
спасибо)
Для второго решения лучше использовать set вместо dict
Да можно, пример будет ниже, но можно еще лучше оптимизировать, вместо "while" использовать "if", если знаете как, то напишите, если нет, но хотите узнать, дайте знать)
class Solution:
def lengthOfLongestSubstring(self, s: str) -> int:
res = 0
left = 0
seen = set()
for right in range(len(s)):
right_char = s[right]
while right_char in seen:
left_char = s[left]
seen.remove(left_char)
left += 1
seen.add(right_char)
res = max(res, right - left + 1)
return res
24 задание из ЕГЭ информатики
Действительно похожее задание)