タイトル:
'('、 ')'、 '{'、 '}'、 '['、 ']'のみを含む文字列を指定して、その文字列が有効かどうかを判断します。
有効な文字列は次の条件を満たす
必要があります。左括弧は同じタイプの右括弧で閉じる必要があります。
開き括弧は正しい順序で閉じる必要があります。
空の文字列は有効な文字列と見なすことができることに注意してください。
**考える:**まず、スタックのポップアップがたまたまファーストインラストアウトであるため、スタックを最初に考えます。これにより、マッチングが容易になります。次に、マップのキーと値のペアを使用して除算できます。括弧はペアになります。最初に文字列をスタックにトラバースし、次にスタックをポップしてハッシュマップと比較します
回答:
class Solution {
public boolean isValid(String s) {
HashMap<Character, Character> hashMap = new HashMap<>();
hashMap.put('}', '{');
hashMap.put(']', '[');
hashMap.put(')', '(');
Stack<Character> charStack = new Stack<>();
for (char c : s.toCharArray()) {
if (c == '(' || c == '[' || c == '{') {
charStack.push(c);
} else if (charStack.isEmpty() || charStack.pop() != hashMap.get(c)) {
return false;
}
}
return charStack.empty();
}
}
効果は次のとおりです。