JS-indexOf()方法可返回某个指定的字符串值在字符串中首次出现的位置

indexOf() 方法可返回某个指定的字符串值在字符串中首次出现的位置。
push() 方法可向数组的末尾添加一个或多个元素,并返回新的长度。
pop() 方法用于删除并返回数组的最后一个元素。

实现isValid() 函数

给定一个只包括’(‘,’)’,’{‘,’}’,’[‘,’]’的字符串,判断字符串是否有效。
有效字符串需满足:
1、左括号必须用相同类型的右括号闭合。
2、左括号必须以正确的顺序闭合。注意空字符串可被认为是有效字符串。
注意:空字符串可被认为是有效字符串。
示例1:

1
2
输入:"()"
输出:true

示例2:

1
2
输入:"()[]{}"
输出:true

示例3:

1
2
输入:"(]"
输出:false

示例4:

1
2
输入:"([)]"
输出:false

示例5:

1
2
输入:"([{}])"
输出:true

思路如下

使用出栈入栈,就是来一个括号当条件满足是就在声明数组 stack 中进行 push,否则就在声明数组 stack 中进行 pop,等判断满足是就一起推出。直到最后,如果数组内还有剩余的元素,那就返回 false,如果为空,那就返回 true。
JS代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
var isValid = function(s) {
let valid = true;
const stack = [];
const mapper = {
'{': '}',
'[': ']',
'(': ')'
}

for(let i in s) {
const v = s[i];
if (['(', '[', '{'].indexOf(v) > -1) {
stack.push(v);
} else {
const peak = stack.pop();
if (v !== mapper[peak]) {
return false;
}
}
}

if (stack.length > 0) return false;

return valid;
};

参考文档1
参考文档2
参考文档3