给定一个字符串所表示的括号序列,包含以下字符: '(', ')'
, '{'
, '}'
, '['
and ']'
, 判定是否是有效的括号序列。
括号必须依照 "()"
顺序表示, "()[]{}"
是有效的括号,但 "([)]"
则是无效的括号。
public class Solution {
/**
* @param s A string
* @return whether the string is a valid parentheses
* 利用栈的先入后出的特征
* java也有Stack类 import.util.Stack
* peek()方法: 查看栈顶对象而不移除它
*/
public boolean isValidParentheses(String s) {
// Write your code here
Stack ss = new Stack();
char temp;
if (s.length() == 0){
return true;
}
for (int i = 0; i < s.length(); i++){
temp = s.charAt(i);
if (temp == '(' || temp == '{' || temp == '['){
ss.push(temp);
}
else if (temp == ')'){
if (!ss.empty() && ss.peek() == '('){
ss.pop();
}
else{
return false;
}
}
else if (temp == '}'){
if (!ss.empty() && ss.peek() == '{'){
ss.pop();
}
else{
return false;
}
}
else if (temp == ']'){
if (!ss.empty() && ss.peek() == '['){
ss.pop();
}
else{
return false;
}
}
}
return ss.empty();//若最后为空,则为有效序列
}
}