问题描述
给一个字符串表达式,包含一个或多个括号,现要求使用栈检查该字符串表达式中的括号是否平衡。
解答思路
遍历字符串中的每个字符,如果:
1)出现左括号则进栈
2)出现右括号则首先检判断栈是否为空,如果不为空,则判断与栈顶元素是否与之匹配,如果匹配则弹出栈顶元素。
3)最后若栈空,则表明匹配成功;否则表明不匹配。
代码实现
/**
* @param s 字符串表达式
* @return 如果匹配返回,true
*/
private static boolean isBalanced1(String s) {
Stack<Character> bracketsStack = new Stack<>();
char[] text = s.toCharArray();
for (char x : text) {
switch (x) {
case '{':
case '<':
case '(':
case '[':
bracketsStack.push(x);
break;
case '}':
if (bracketsStack.peek() == '{') {