Форум сайта python.su
6
py.user.next
А просто через .replace() удалять скобки - неправильно, так как после каждого удаления последовательность меняется, из-за чего надо повторно проходить.
При миллионе символов в строке это сразу будет заметно.
Офлайн
0
Да как тогда написать код для этих скобок, я уже 3 дня мучаюсь с этой задачей 
Я уже думал, что можно проверить список на наличие рядом стоящих скобок и удалить их. А потом зациклить всё это пока список не кончится. Теперь вообще не знаю как делать :-(
Офлайн
857
dobriy_dadaАлгоритм
Да как тогда написать код для этих скобок
givebackДа, там за один проход всё можно сделать, а не за сотни тысяч.
имеете ввиду что не правильно из-за скорости работы?
Отредактировано py.user.next (Окт. 18, 2015 12:17:38)
Офлайн
0
py.user.next
спасибо :-) Теперь разобрался
Офлайн
0
Вот код, может кто-то будет искать:
Ключевые слова: проверка баланса скобок, неповторяющиеся скобки, скобки, со скобками
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
Офлайн