Найти - Пользователи
Полная версия: Найти два соседних элемента
Начало » Python для новичков » Найти два соседних элемента
1 2 3
giveback
py.user.next
А просто через .replace() удалять скобки - неправильно, так как после каждого удаления последовательность меняется, из-за чего надо повторно проходить.
При миллионе символов в строке это сразу будет заметно.

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

giveback
имеете ввиду что не правильно из-за скорости работы?
Да, там за один проход всё можно сделать, а не за сотни тысяч.
dobriy_dada
py.user.next
спасибо :-) Теперь разобрался
dobriy_dada
Вот код, может кто-то будет искать:
Ключевые слова: проверка баланса скобок, неповторяющиеся скобки, скобки, со скобками
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
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB