SOURCE

/*
### 一、题目

**有效的括号。**

给定一个只包括 '(',')','{','}','[',']' 的字符串,判断字符串是否有效。

有效字符串需满足:
- 左括号必须用相同类型的右括号闭合。
- 左括号必须以正确的顺序闭合。

注意空字符串可被认为是有效字符串。

- 输入: "()",输出: true
- 输入: "()[]{}",输出: true
- 输入: "(]",输出: false
- 输入: "([)]",输出: false
- 输入: "{[]}",输出: true


### 二、解析

定义一个判断一对符号有效的一个函数,例如:两个小括号,连个中括号,两个大括号,都是有效符号。
然后在验证的方法中,先定义一个空数组,将传入的字符串分割放入到这个数组中,然后循环该数组。如果数组的前一项和后一项符合一对符号验证的结果,就将这对符号删掉,如果没有找到成对的,不做任何操作。最后判断最终这个数组的长度,如果为0,说明符号都是成对的,有效的,否则是无效的。
*/

var isValid = function (s) {
    var arr = [];
    arr = s.split("");
    for (var i = 0; i < arr.length;) {
        if (check(arr[i], arr[i + 1]) == true) {
            arr.splice(i, 2);
            i--;
        } else {
            i++;
        }
    }
    if (arr.length == 0) {
        return true;
    } else {
        return false;
    }
};

// 判断一对括号是否有效
function check(m, n) {
    if (m == '(' && n == ')') {
        return true;
    } else if (m == '[' && n == ']') {
        return true;
    } else if (m == '{' && n == '}') {
        return true;
    } else {
        return false;
    }
};
console.log(isValid("()"));
console.log(isValid("{[]}"));
console.log(isValid("([)]"));



/*
### 三、知识点

#### split()
将字符串分割并放到数组中:

*/
console.log("qwert".split()); // ["qwert"]
console.log("qwert".split("")); // ["q", "w", "e", "r", "t"]
console.log("qwert".split("e")); // ["qw", "rt"]


/*
#### splice()

- 如果传入两个参数,就是删除从开始到其实位置的数据,返回剩下的数据;
- 如果传入三个参数,第二个参数为 0,就是插入的意思,第三个参数是要插入的数据;
- 如果传入三个参数,第二个参数不为 0,指的就是删除几个,第三个参数是删除后要替换的数据。


*/
var arr = ["q", "w", "e", "r", "t"];
arr.splice(1, 1);
console.log(arr); // ["q", "e", "r", "t"]
arr.splice(1, 0, "qqq");
console.log(arr); // ["q", "qqq", "e", "r", "t"]
arr.splice(1, 3, "www");
console.log(arr); // ["q", "www", "t"]
console 命令行工具 X clear

                    
>
console