思路:
1.利用栈,遇到 (、[、{ 就往栈中存入 )、]、} ,如果不是这三个字符,那么如果栈是空的,那当前字符就不能被匹配了。例如(、[、{、}、]、)、] ,最后一个导致不是有效序列了
2.如果栈不是空的,那么栈中弹出的元素必须要和当前遍历的相等。"([)]" 是不合法的,必须是"()[]{}" 类似这种,没有嵌套,或者嵌套是([])
import java.util.*;
public class Solution {
/**
*
* @param s string字符串
* @return bool布尔型
*/
public boolean isValid (String s) {
// write code here
if(s == null){
return false;
}
Stack<Character> temp = new Stack<>();
for(Character ch : s.toCharArray()){
if(ch == '('){
temp.push(')');
}else if(ch == '{'){
temp.push('}');
}else if(ch == '['){
temp.push(']');
}else if(temp.isEmpty() || temp.pop() != ch){
return false;
}
}
return temp.isEmpty();
}
}