Форум сайта python.su
Извините, ну я просто не могу понять как сделать это задачу?
Входные данные: строка, которая состоит из открывающих и закрывающих круглых дужек, - аргумент командной строки. Для передачи в качестве строки последовательность берется в двойные кавычки.
Результат работы: строка “YES”, если входная строка содержит правильную дужкову последовательность; или строка “NO”, если последовательность является неправильной. Дужкова последовательность считается правильной, если все дужки можно разбить попарно “видкриваюча”-“закриваюча”, при чем в каждой паре закрывающая дужка следует после открывающей.
Например
Входные данные: “)(” Результат: NO Входные данные: “(()(()” Результат: NO Входные данные: “(()(()()))” Результат: YES Входные данные: “())()(()())(()” Результат: NO
P.S. Если можно код, с обьяснениями, спасибо.
Офлайн
import sys a = sys.argv[1] while a.find('()') + 1: a = a.replace('()', '') print 'NO' if a else 'YES'
Отредактировано terabayt (Фев. 19, 2015 22:55:28)
Офлайн
Большое спасибо, читаю про
a.find
a.replace
Офлайн
>>> def f(seq, se='()'): ... st = [] ... s, e = se ... for i in seq: ... if i == s: ... st.append(i) ... elif i == e: ... if st: ... st.pop() ... else: ... return False ... return st == [] ... >>> f(')(') False >>> f('(()(()') False >>> f('(()(()()))') True >>> f('())()(()())(()') False >>> >>> f('a(b(c)d(e(f)g(h)i)j)k') True >>> f('a(b)c)d(e)f(g(h)i(j)k)l(m(n)o') False >>>
Отредактировано py.user.next (Фев. 20, 2015 01:23:46)
Офлайн