[Codekata] Week2 - Day3
7159 ワード
質問する
sは、複数の括弧からなるStringパラメータである.
true/false、sが有効かどうかを返してください.
「(」、「)」、「[」、「]」、「{」、「}」の6種類があります.次の場合に有効です.
かっこを開始するには、同じカッコで終了します.
かっこの順序は正しいです.
例:s = "()"
return true
s = "()[]{}"
return true
s = "(]"
return false
s = "([)]"
return false
s = "{[]}"
return true
に答える
私は結局解けないので、私の解はありません.
#1
いずれにしても、お互いに会う角括弧があるので、会うものを一つ一つ削除します.
最後に、string
が空の場合、True
の方法を返すdef is_valid(string):
A = '()'
B = '{}'
C = '[]'
if len(string) % 2 == 1:
return False
for i in range(len(string) // 2): # 짝으로 찾을거니까 range는 string 길이의 반
if A in string:
string = string.replace(A, '')
elif B in string:
string = string.replace(B, '')
elif C in string:
string = string.replace(C, '')
if string == '':
return True
else:
return False
#2
開いたカッコに遭遇した場合は、stack
のリストに積み上げます.
最後の開いたかっこと一致する閉じたかっこが見つかった場合は、stack
から閉じたかっこを削除します.def is_valid(string):
p_dict = {')': '(', ']': '[', '}': '{'}
stack = []
for i in string:
if i in p_dict.values():
stack.append(i)
else:
# list.pop() 반환값은 제일 마지막 값
# 반환 후 list에서 마지막 값이 사라짐
if not stack or p_dict[i] != stack.pop(): # pop의 반환값과 비교
return False
return not stack
データ構造:Stack
s = "()"
return true
s = "()[]{}"
return true
s = "(]"
return false
s = "([)]"
return false
s = "{[]}"
return true
私は結局解けないので、私の解はありません.
#1
いずれにしても、お互いに会う角括弧があるので、会うものを一つ一つ削除します.
最後に、
string
が空の場合、True
の方法を返すdef is_valid(string):
A = '()'
B = '{}'
C = '[]'
if len(string) % 2 == 1:
return False
for i in range(len(string) // 2): # 짝으로 찾을거니까 range는 string 길이의 반
if A in string:
string = string.replace(A, '')
elif B in string:
string = string.replace(B, '')
elif C in string:
string = string.replace(C, '')
if string == '':
return True
else:
return False
#2
開いたカッコに遭遇した場合は、
stack
のリストに積み上げます.最後の開いたかっこと一致する閉じたかっこが見つかった場合は、
stack
から閉じたかっこを削除します.def is_valid(string):
p_dict = {')': '(', ']': '[', '}': '{'}
stack = []
for i in string:
if i in p_dict.values():
stack.append(i)
else:
# list.pop() 반환값은 제일 마지막 값
# 반환 후 list에서 마지막 값이 사라짐
if not stack or p_dict[i] != stack.pop(): # pop의 반환값과 비교
return False
return not stack
データ構造:Stack
ex)Webブラウザでの後退ボタン
私が今見ているのは一番上のページです.一番上のページを削除すると(後退)、一番前の
Reference
この問題について([Codekata] Week2 - Day3), 我々は、より多くの情報をここで見つけました https://velog.io/@jungminnn/Codekata-Week-2-Day-3テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol