Как оптимизировать этот алгоритм, чтобы найти самую длинную подстроение без каких -либо дублирующих символовPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Как оптимизировать этот алгоритм, чтобы найти самую длинную подстроение без каких -либо дублирующих символов

Сообщение Anonymous »

Сегодня я решил интересную проблему из 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
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»