一、题目描述
给定一个只包括 '('
,')'
,'{'
,'}'
,'['
,']'
的字符串 s
,判断字符串是否有效。
有效字符串需满足:
- 左括号必须用相同类型的右括号闭合。
- 左括号必须以正确的顺序闭合。
示例 1:
输入:s = "()"
输出:true
示例 2:
输入:s = "()[]{}"
输出:true
示例 3:
输入:s = "(]"
输出:false
示例 4:
输入:s = "([)]"
输出:false
示例 5:
输入:s = "{[]}"
输出:true
提示:
- 1 <=
s.length
<= 104 - s 仅由括号 '()[]{}' 组成
先说一下我的思路吧
- 声明一个数组,循环字符串。
- 做判断,当前字符串是否和数组中最后一个元素可以相互抵消,比如
{
与}
[
与]
(
与)
如果可以弹出数组最后一个元素,否则加入数组。 - 最后判断数组长度是否为0
那么代码就是比较简单的事情了。
/**
* @param {string} s
* @return {boolean}
*/
var isValid = function (s) {
let arr = []
for (let i = 0; i < s.length; i++) {
if (!isSym(arr[arr.length - 1], s[i])) {
arr.push(s[i])
} else {
arr.pop()
}
}
return arr.length == 0
};
// 判断是否可以抵消
function isSym(a, b) {
return ((a == '[' && b == ']') || (a == '{' && b == '}') || (a == '(' && b == ')'))
}
最后当然还有其他一些思路 比如用 "{}" "[]" "()" 字符串去取代空字符串"", 判断最后字符串是否为空
好了,时候不早了,喜欢记得点个关注,就是对我最大的支持!