括号匹配
检测表达式中的括弧是否匹配
假设表达式中包含三种括弧:小括弧(),中括弧[],大括弧{},这三种括弧可以任意嵌套。
(3+5)*[ 3-6] -{23/4}+([{}])。
对于任意一个左括弧都有一个右括弧进行匹配那么就说这个括号整体是合法的。
栈结构的经典例题,使用栈来对括号进行一个“匹配”的实现。
代码如下(未包含测试类)
import java.util.Stack;
public class macthingOfBrackets {
public static boolean islegel(String str){
Stack<Character> stack = new Stack<>();
int len = str.length();
for (int i = 0; i < len; i++) {
switch (str.charAt(i)){
case '(':
stack.push('(');
break;
case '{':
stack.push('{');
break;
case '[':
stack.push('[');
break;
case ')':
if(stack.isEmpty()||(!stack.pop().equals('(')))
return false;
break;
case '}':
if(stack.isEmpty()||(!stack.pop().equals('{')))
return false;
break;
case ']':
if(stack.isEmpty()||(!stack.pop().equals('[')))
return false;
break;
}
}
return true;
}
}