Valid Parentheses
括弧の文字列は、すべての開き括弧が同じ種類の括弧で閉じられ、括弧の組が重なり合うのではなく互いに内側に収まっているとき、バランスが取れています。括弧には丸括弧 ()、角括弧 []、波括弧 {} の3種類があります。
たとえば、{[()()]} はバランスが取れています。それぞれの組が、それを囲む組の内側で閉じているからです。一方、{(}) はバランスが取れていません。丸括弧が開いたままなのに、その後に波括弧が閉じているからです。(( のような文字列もバランスが取れていません。2つの開き括弧を閉じるものがないためです。
isValidという名前の関数を作成します。この関数は、(、)、[、]、{、}のみで構成される文字列sを受け取り、括弧の対応が取れている場合はtrueを、それ以外の場合はfalseを返します。
括弧の対応が取れているとは、すべての閉じ括弧が、まだ閉じられていない直近の開き括弧と対応し、同じ種類であり、最後に開いたままの括弧がないことを意味します。
制約: 1 ≤ s.length ≤ 10^4。
関数
- arg1string
- 戻り値boolean
例
- 入力
- arg1 = "[]{}()"
- 出力
- true
- 入力
- arg1 = "{[()()]}"
- 出力
- true
- 入力
- arg1 = "{(})"
- 出力
- false
提出時に隠しテスト+13件
ヒント
1つずつ開いてください。開くたびに少しずつ答えに近づきます。
文字列を左から右へ読みます。閉じ括弧が現れたとき、どの開き括弧を閉じることができますか?
閉じることができるのは、最も最近に開かれ、まだ閉じられていない開始括弧だけです。最後に開いたものを最初に閉じる。これがまさにスタックが保つ順序です。
開き括弧をすべてスタックにプッシュします。閉じ括弧が現れたとき、スタックが空でなく、先頭の要素が同じ種類でなければなりません。それをポップして続けます。文字列の終わりまで処理したとき、スタックが空の場合に限り、括弧の対応が取れています。
この問題の詳しい解説は準備中です。
似た問題
同じ考え方を使う問題です。2〜3問解くとパターンが身につきます。
Python
def isValid(s):
# ここにコードを書いてくださいケース1
ケース2
ケース3
入力
arg1 = "[]{}()"期待値
true