括号匹配

题目:给定'[' ']' '{' '}' '(' ')'六个字符组成的字符串,判断其是否符正常括号匹配原则:

  1. 左括号必须用相同类型的右括号闭合
  2. 左括号必须以正确的顺序闭合

思路:通过数组模拟栈结构实现匹配判断,若遇左括号入栈,右括号出栈,当栈顶的左括号元素与下一个右括号元素类型不一样时,表示出现不符合括号类型

var string = "{[()]}()";

function verify(string) {
    var sArray = string.split('');
    var array = [];
    for (var i = 0; i < sArray.length; i++) {
        if(sArray[i]=='[') array.push('['); //模拟进栈操作
        if(sArray[i]==']'&&array[array.length-1]!='[') return false; //不匹配
        if(sArray[i]==']'&&array[array.length-1]=='[') array.pop(); //模拟出栈操作
        if(sArray[i]=='(') array.push('('); //模拟进栈操作
        if(sArray[i]==')'&&array[array.length-1]!='(') return false; //不匹配
        if(sArray[i]==')'&&array[array.length-1]=='(') array.pop();//模拟出栈操作
        if(sArray[i]=='{') array.push('{'); //模拟进栈操作
        if(sArray[i]=='}'&&array[array.length-1]!='{') return false; //不匹配
        if(sArray[i]=='}'&&array[array.length-1]=='{') array.pop(); //模拟出栈操作 
    }
    return true; //匹配
}

console.log(verify(string)); //结果为true或false

你可能感兴趣的:(括号匹配)