括号匹配(算法)
思路:使用栈后进先出的特殊结构,对括号进行匹配,每次执行stack.push()后当前循环结束开始下一次循环
public boolean KuoHao(String str){ Stack<Character> stack = new Stack<>(); for(char s : str.toCharArray()){ if(s=='(') stack.push(')'); else if(s=='[') stack.push(']'); else if(s=='{') stack.push('}'); else if(stack.isEmpty() || stack.pop()!=s) return false; } return stack.isEmpty(); }
代码分析
(1)s='(' 将 ‘)' 入栈 进行下一次循环
(2)s='[' 将 ’]'入栈 进行下一次循环
(3)s='{' 将 '}' 入栈 进行下一次循环
(4)s='}' stack.pop()='}' 将 } 弹出栈 进行下一次循环
(5)s=']' stack.pop()=']' 将 ] 弹出栈 进行下一次循环
(6)栈中还有值,说明没有匹配完 stack.isEmpty() = false