Уведомления

Группа в Telegram: @pythonsu

#1 Окт. 19, 2015 20:39:52

Tucha
Зарегистрирован: 2015-09-12
Сообщения: 24
Репутация: +  0  -
Профиль   Отправить e-mail  

Помогите составить правильный (быстрый) алгоритм

Для тех кто не сильно устал на работе
Есть задача http://acm.timus.ru/problem.aspx?space=1&num=1654
Вот мой код (постарался описать получше)

from sys import stdin
data = ' '.join(stdin.read()).split()   # преобразуем строку в список подстрок
index = 0   # нулевой индекс как точка старта
while index < len(data) - 1:   # крутим пока есть хоть одна пара для проверки
    if data[index] == data[index + 1]:   # проверяем соседние буквы
        del data[index:index + 2]   # удаляем если соседние символы равны
        index -= 1   # возвращаемся на шаг назад, на случай, если после удаления среза, соседние символы оказались равны
        if index < 0:   # страхуемся от отрицательного индекса
            index = 0
    else:
        index += 1   # если удаления не было, продвигаемся на шаг вперёд
print(''.join(data))
Сейчас ещё два варианта в голову пришли, но не хватает знаний для реализации, пока копаюсь в библиотеках, может кто поможет советом или подсказкой, как ускорить код.

Отредактировано Tucha (Окт. 19, 2015 20:40:23)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version