1日あたり1つのアルゴリズム(6日目)有効なかっこ
‘(’,’)’,’{’,’}’,’[’,’]’のみを含む文字列を与え,文字列が有効であるか否かを判断する.
有効な文字列は次のとおりです.
左かっこは同じタイプの右かっこで閉じる必要があります.左かっこは正しい順序で閉じなければなりません.注意空の文字列は有効な文字列とみなされます.
例1:
入力:「()」出力:true例2:
入力:「()[]{}」出力:true例3:
入力:「(」出力:false例4:
入力:「([)]出力:false例5:
入力:{[]}出力:true
アルゴリズムは以下のように実現される.
有効な文字列は次のとおりです.
左かっこは同じタイプの右かっこで閉じる必要があります.左かっこは正しい順序で閉じなければなりません.注意空の文字列は有効な文字列とみなされます.
例1:
入力:「()」出力:true例2:
入力:「()[]{}」出力:true例3:
入力:「(」出力:false例4:
入力:「([)]出力:false例5:
入力:{[]}出力:true
アルゴリズムは以下のように実現される.
class Solution(object):
def isValid(self, s):
"""
:type s: str
:rtype: bool
"""
tmplist = []
for x in s:
try:
if x == '(' or x == '{' or x == '[':
tmplist.append(x)
elif x == ')':
if tmplist[-1] == '(':
tmplist.pop(-1)
else:
raise Exception
elif x == '}':
if tmplist[-1] == '{':
tmplist.pop(-1)
else:
raise Exception
elif x == ']':
if tmplist[-1] == '[':
tmplist.pop(-1)
else:
raise Exception
except Exception:
return False
if len(tmplist) == 0:
return True
else:
return False