您的位置:首页 > 其它

leetcode 52: valid parentheses

2013-01-25 05:00 330 查看
Valid ParenthesesJan
30 '12

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.

class Solution:
# @return a boolean
def isleft(self, c):
return c=='(' or c=='{' or c=='['

def ispair(self, l, r):
if l=='(': return r==')'
elif l=='[': return r==']'
elif l=='{': return r=='}'
else: return False

def isValid(self, s):
stack = []
for c in s:
if self.isleft(c) :
stack.append(c)
elif not stack: return False
elif self.ispair(stack[-1], c): stack.pop()
else: return False
return not stack


class Solution {
public:
bool isValid(string s) {
// Start typing your C/C++ solution below
// DO NOT write int main() function
stack<char> myStack;
char c;

for( int i=0; i<s.size(); i++) {
if( s[i] == '(' || s[i] == '[' || s[i] == '{') {
myStack.push( s[i] );
} else if( myStack.empty() ) {
return false;
} else if( s[i] == ')') {
c = myStack.top();
if( c!= '(' ) return false;
else myStack.pop();
} else if( s[i] == ']') {
c = myStack.top();
if( c!= '[' ) return false;
else myStack.pop();
} else if( s[i] == '}') {
c = myStack.top();
if( c!= '{' ) return false;
else myStack.pop();
} else {
return false;
}
}

return myStack.empty();
}
};


public class Solution {

//null, "", "(){}[]" "({[]})" "(({}]"
public boolean isValid(String s) {
// Start typing your Java solution below
// DO NOT write main() function
if(s==null || s.length()==0) return true;

Stack<Character> stack = new Stack<Character>();

for(int i=0; i<s.length(); i++) {
char c = s.charAt(i);
if(c=='(' || c=='{' || c=='[' ) {
stack.push(c);
} else if(stack.isEmpty() ){
return false;
} else {
boolean r = isValid(stack.peek(), c);
if(r) {
stack.pop();
} else {
return false;
}
}
}
return stack.isEmpty();
}

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