先上题目
给定一个只包括
'('
,')'
,'{'
,'}'
,'['
,']'
的字符串,判断字符串是否有效。有效字符串需满足:
- 左括号必须用相同类型的右括号闭合。
- 左括号必须以正确的顺序闭合。
注意空字符串可被认为是有效字符串。
leetcode 哭笑不得的一题,没仔细审题的后果((。・・)ノ
一开始的写法是这样的
var isValid = function (s) {
let arr = s.split("");
let obj = {};
for (let i = 0; i < arr.length; i++) {
obj[arr[i]] ? obj[arr[i]]++ : (obj[arr[i]] = 1);
}
if (obj["("] === obj[")"] && obj["["] === obj["]"] && obj["{"] === obj["}"]) {
return true;
} else {
return false;
}
};
一开始test毫无问题,放心的点下了submit,知道停在了84/91,看到了这个
"([)]"
emmm开始挠头寻求解决方案
最简洁的应该还是这个
var isValid = function (s) {
let len = s.length / 2;
for (let i = 0; i < len; i++) {
s = s.replace("()", "");
s = s.replace("[]", "");
s = s.replace("{}", "");
}
return s.length ? false : true;
};