括弧を検証して、あらゆる種類の文字を囲んで無視できるようにしたいと考えています。文字列を括弧で囲む有効な使用法がある限り、それTrue
以外の場合は `False.
私はまだPythonに慣れていないので、この特定の条件に対してifステートメントを適切に作成する方法がわかりません。エラーメッセージを受け取る代わりに.pop()
、空のときにdeque()
できるようにfi ステートメントを作成しようとしています。return False
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
IndexError: pop from an empty deque
おそらく、この問題を解決するための別のより良い方法があります。もしそうなら、他の誰かがそれを解決する方法を見てうれしいです
例えば:
a = 'sdf(sadf(sdf)sdf)sdfsd0sdf)sdf(sdf0)' # false
b = 'dsf))))(((((dsfsdf' # false
c = '()()()()' # true
d = '((((asd(asd)asd)()()asd))' # true
私のコード:
# any letter is ignored
# jsut make sure that the parenthesis are equal
from collections import *
def str_valid(stringy):
param_stack = deque()
for n in stringy:
if n ==')':
param_stack.pop()
if n == '(':
param_stack.append('(')
if param_stack == []:
return True
else:
return False
a = 'sdf(sadf(sdf)sdf)sdfsd0sdf)sdf(sdf0)' # false
b = 'dsf))))(((((dsfsdf' # false
c = '()()()()' # true
d = '((((asd(asd)asd)()()asd))' # true
print str_valid(a)
print str_valid(b)
print str_valid(c)
print str_valid(d)