Сегодня я решил интересную проблему из LeetCode: найти самую длинную подстроение без каких -либо дублирующих символов. Эта проблема познакомила меня с методикой динамического скользящего окна с мощным инструментом, который я могу добавить в свой арсенал. При встрече с дубликатом я заставил программу сжиматься слева вправо и удаляя их с помощью цикла времени. Должен быть способ оптимизировать его дальше. Есть предложения? < /P>
class Solution(object):
def lengthOfLongestSubstring(self, s):
"""
:type s: str
:rtype: int
"""
longest = set()
l = 0
max_num = 0
# "abcabcbb"
for r in range(len(s)):
# add the s[r] if not in arr
while s[r] in longest:
longest.remove(s[l])
l += 1
if s[r] not in longest:
longest.add(s[r])
max_num = max(max_num, (r-l) + 1)
print(longest)
print(max_num)
continue
return max_num
< /code>
Эта проблема помогла мне понять, как выбирать правильную структуру данных и методику для использования, и как расширить и сократить скользящее окно. Вы сталкивались с этой проблемой раньше? Как бы вы его оптимизировали?
Подробнее здесь: https://stackoverflow.com/questions/795 ... ny-duplica
Как оптимизировать этот алгоритм, чтобы найти самую длинную подстроение без каких -либо дублирующих символов ⇐ Python
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Как найти самую длинную подстроение с одинаковым количеством символов эффективно
Anonymous » » в форуме JAVA - 0 Ответы
- 2 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Проверьте, содержит ли строка подстроение из массива подстроков и вернуть эту подстроение
Anonymous » » в форуме Php - 0 Ответы
- 17 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Ограничение по времени на самую длинную палиндромическую подстроение на LeetCode
Anonymous » » в форуме C++ - 0 Ответы
- 2 Просмотры
-
Последнее сообщение Anonymous
-