您的位置:首页 > 其它

LeetCode20: Valid Parentheses

2013-02-22 14:09 330 查看
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.

public class Solution {
public boolean isValid(String s) {
// Start typing your Java solution below
// DO NOT write main() function
Stack<Character> stack = new Stack<Character>();
for(int i=0; i<s.length(); i++){
char ch = s.charAt(i);
if(ch=='(' || ch=='[' || ch=='{')
stack.push(ch);
else{
if(ch==')'){
if(stack.size()==0 || stack.pop()!='(')
return false;
}
else if(ch==']'){
if(stack.size()==0 || stack.pop()!='[')
return false;
}
else if(ch=='}'){
if(stack.size()==0 || stack.pop()!='{')
return false;
}
}
}
if(stack.size()!=0)
return false;
return true;
}
}


Attention!!!: Need to check stack size before pop()!!!!

------------------------------------------------------------------------------------------------------------------------------------------

LL's solution:

public static boolean isValid(String s) {
int len = s.length();
if(len%2!=0||len<1)
return false;
Stack st = new Stack();
st.push(s.charAt(0));
int i = 1;
while(!st.isEmpty() || i<len){
char c = s.charAt(i);
if((c==')' && (char)st.peek()=='(') || (c=='}' && (char)st.peek()=='{') || (c==']' && (char)st.peek()=='['))
st.pop();
else if(c=='(' || c == '{' || c=='[')
st.push(c);
else
return false;
i++;
}
if(st.isEmpty())
return true;
else
return false;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: