Уведомления

Группа в Telegram: @pythonsu

#1 Окт. 18, 2015 11:59:59

giveback
Зарегистрирован: 2015-05-03
Сообщения: 36
Репутация: +  6  -
Профиль   Отправить e-mail  

Найти два соседних элемента

py.user.next
А просто через .replace() удалять скобки - неправильно, так как после каждого удаления последовательность меняется, из-за чего надо повторно проходить.
При миллионе символов в строке это сразу будет заметно.

имеете ввиду что не правильно из-за скорости работы?

Офлайн

#2 Окт. 18, 2015 12:00:59

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

Найти два соседних элемента

Да как тогда написать код для этих скобок, я уже 3 дня мучаюсь с этой задачей
Я уже думал, что можно проверить список на наличие рядом стоящих скобок и удалить их. А потом зациклить всё это пока список не кончится. Теперь вообще не знаю как делать :-(

Офлайн

#3 Окт. 18, 2015 12:15:30

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 10016
Репутация: +  857  -
Профиль   Отправить e-mail  

Найти два соседних элемента

dobriy_dada
Да как тогда написать код для этих скобок
Алгоритм

giveback
имеете ввиду что не правильно из-за скорости работы?
Да, там за один проход всё можно сделать, а не за сотни тысяч.



Отредактировано py.user.next (Окт. 18, 2015 12:17:38)

Офлайн

#4 Окт. 18, 2015 14:16:11

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

Найти два соседних элемента

py.user.next
спасибо :-) Теперь разобрался

Офлайн

#5 Окт. 18, 2015 16:02:55

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

Найти два соседних элемента

Вот код, может кто-то будет искать:
Ключевые слова: проверка баланса скобок, неповторяющиеся скобки, скобки, со скобками

def checkio(expression):
    LEFT='([{'
    RIGHT=')]}'
    PAIR_ROUND='()'
    PAIR_SQUARE='[]'
    PAIR_CURLY='{}'
    l_bracket=[]
    for i in expression:
        if i in LEFT:
            l_bracket.append(i)
        if i in RIGHT:
            if not l_bracket: return False
            elif i in PAIR_ROUND and l_bracket[-1] in PAIR_ROUND:
                del l_bracket[-1]
            elif i in PAIR_SQUARE and l_bracket[-1] in PAIR_SQUARE:
                del l_bracket[-1]
            elif i in PAIR_CURLY and l_bracket[-1] in PAIR_CURLY:
                del l_bracket[-1]
            else: return False
    if not l_bracket: return True
    return False

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version