20. Valid Parentheses
💡 に答える
var isValid = function (s) {
let stack = [];
for (let i = 0; i < s.length; i++) {
if (s[i] === '(') stack.push(')');
else if (s[i] === '{') stack.push('}');
else if (s[i] === '[') stack.push(']');
else {
if (s[i] !== stack.pop()) return false;
}
}
console.log('stack: ', stack);
return stack.length === 0;
};
let s = '{[]}';
isValid(s);
📝 整理する
stackに関する問題を練習しています.問題の要件は、カッコが正しく閉じられているかどうかを判別することです.次の例を見ればわかります.
問題は、小かっこ、大かっこ、角かっこの3つです.
左かっこが発生した場合、同じ形状の右かっこ
stack
がpush
配列に使用される.上記のコードの最後の
else
文は、括弧を閉じる場合の条件のみであり、s[i]
がstack.pop()
と異なる場合は、括弧の順序がinValidであることを示す.ではfalse
をそのままreturn
と書けばいいです最後に有効な括弧であれば、これまで
stack
に入った要素の個数とstack.pop()
の回数は同じである.したがって、カッコが有効な場合、stack
は常に空の配列になります.質問リンク
https://leetcode.com/problems/valid-parentheses/
LeetCode GitHub
https://github.com/tTab1204/LeetCode
Reference
この問題について(20. Valid Parentheses), 我々は、より多くの情報をここで見つけました https://velog.io/@ken1204/20.-Valid-Parenthesesテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol