题目:
给定一个字符串,只包含(,[,{,),],},判定字符串中的括号匹配是否合法。
示例:
- 如"()","()[]{}"是合法的
- 如"(]","([)]"是非法的
思路:
依次遍历,遇到左括号入栈,右括号出栈,进行匹配。
代码:
package com.haobi;
import java.util.Stack;
public class ValidParentheses {
public static void main(String[] args) {
String s = "()}";
System.out.println(isValid(s));
}
public static boolean isValid(String s) {
Stack<Character> stack = new Stack<Character>();
char[] ss = s.toCharArray();
for(int i=0;i<ss.length;i++) {
//如果为左括号,则入栈
if(ss[i]=='(' || ss[i]=='[' || ss[i]=='{') {
stack.push(ss[i]);
}else {//处理右括号
if(stack.size() == 0) {//如果栈为空且此时要处理右括号
return false;
}
//元素出栈
char c = stack.pop();
char match = ' ';
switch(ss[i]) {
case ')':
match = '(';
break;
case ']':
match = '[';
break;
case '}':
match = '{';
break;
}
if(c != match) {
return false;
}
}
}
if(stack.size() != 0) {
return false;
}
return true;
}
}