您的位置:首页 > 其它

Lint-code-有效的括号序列

2017-02-24 20:06 253 查看
给定一个字符串所表示的括号序列,包含以下字符: 
'(',
')'
'{'
'}'
'['
 and 
']'

判定是否是有效的括号序列。

样例

括号必须依照 
"()"
 顺序表示, 
"()[]{}"
 是有效的括号,但 
"([)]"
则是无效的括号。
此题主要的思想是用栈来作为存储数据结构,我们将')'、‘}’、‘]’视为右括号,当遇到右括号时查看当前栈顶是否为与之对应的左括号,如果是,则将栈顶元素弹出,继续对比,如果不是与之对应的左括号,则退出返回false。
代码如下:
public static boolean isValidParentheses(String s) {
if(s == null || s.length() == 0 || s.length()%2!=0){
return false;
}
Stack<Character> stack = new Stack<Character>();
boolean flag = true;
for(int i=0;i<s.length();i++){
if(s.charAt(i) =='(' || s.charAt(i) == '{' || s.charAt(i) == '['){
stack.push(s.charAt(i));
}else if(s.charAt(i) == ')'){
if(!stack.empty() && stack.peek() == '('){
stack.pop();
}else{
flag = false;
break;
}

}else if(s.charAt(i) == '}'){
if(!stack.empty() && stack.peek() == '{'){
stack.pop();
}else{
flag = false;
break;
}

}else if(s.charAt(i) == ']'){
if(!stack.empty() && stack.peek() == '['){
stack.pop();
}else{
flag = false;
break;
}
}
}
if(!stack.empty()){
flag = false;
}
return flag;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  stack