如果輸入字符串滿足以下條件則為有效:
- 開括號必須由相同類型的閉括號關閉。
- 開括號必須以正確的順序關閉。
- 每個閉括號都有一個相應類型的開括號。
/**
* @param {string} s - 輸入的字符串,包含括號字符
* @return {boolean} - 如果括號有效則返回 true,否則返回 false
*/
var isValid = function(s) {
// 如果字符串的長度不在 1 到 10^4 之間,返回 false
if (s.length < 1 || s.length > Math.pow(10, 4)) {
return false;
}
// 建立括號匹配的映射
const map = new Map([
[")", "("],
["]", "["],
["}", "{"]
]);
// 用於存儲開括號的堆疊
const stackArray = [];
// 遍歷字符串中的每個字符
for (let i = 0; i < s.length; i++) {
const char = s[i];
// 如果是閉括號,檢查堆疊頂部是否匹配
if (map.has(char)) {
// 如果堆疊為空或堆疊頂部的括號不匹配,返回 false
if (stackArray.length === 0 || stackArray.pop() !== map.get(char)) {
return false;
}
} else {
// 如果是開括號,壓入堆疊
stackArray.push(char);
}
}
// 如果堆疊為空,則所有括號都匹配
return stackArray.length === 0;
};