您的位置:首页 > 其它

LeetCode刷题笔录Valid Parentheses

2014-07-18 03:59 387 查看
Given a string containing just the characters
'('
,
')'
,
'{'
,
'}'
,
'['
and
']'
,
determine if the input string is valid.

The brackets must close in the correct order,
"()"
and
"()[]{}"
are
all valid but
"(]"
and
"([)]"
are
not.

这题只要求括号是合法的。用一个stack,遇到左括号就丢到stack里,遇到右括号就弹出stack顶上的括号,看看是不是一对。是的话就继续,不是的话返回false。扫描完一遍以后,stack如果不是空的,说明左括号多了,返回false。

public class Solution {
public boolean isValid(String s) {
//this stack stores all the left parentheses
Stack<Character> stack = new Stack<Character>();
for(int i = 0; i < s.length(); i++){
char current = s.charAt(i);
//if the next character is a right par
if(isLeft(current) == false){
if(stack.isEmpty()){
return false;
}
//check the top par on the stack if it formsa pair with the current par
char top = stack.pop();
if(isPair(top, current) == false){
return false;
}
}
//if the next character is a left par, push onto the stack
else{
stack.push(current);
}
}
if(stack.isEmpty() == false)
return false;
return true;

}

public boolean isLeft(char c){
if(c == '[' || c == '{' || c == '(')
return true;
else
return false;
}

public boolean isPair(char left, char right){
if(left == '(' && right == ')')
return true;
if(left == '[' && right == ']')
return true;
if(left == '{' && right == '}')
return true;
return false;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: