您的位置:首页 > 其它

【LeetCode20】【Valid Parentheses】

2017-05-04 11:39 363 查看

题目:

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.

就是说要判断内容为”{“,”}”,”[“,”]”,”(“,”)”的字符串,是否一一对应,有开始有结束。

代码

1.个人思路

/**我优化几遍后的代码
* 最短用时:8ms
* beats:93.67%
*/
public boolean isValid1(String s) {
if(s.length()%2!=0||s.length()==0){return false;}
Stack<Character> stack = new Stack<Character>();
for(char c:s.toCharArray()){
if(c=='('||c=='{'||c=='['){stack.push(c);}
else if(stack.isEmpty()){return false;}
else if(c==']'){if(stack.peek()!='['){return false;}stack.pop();}
else if(c==')'){if(stack.peek()!='('){return false;}stack.pop();}
else if(c=='}'){if(stack.peek()!='{'){return false;}stack.pop();}
}
return stack.isEmpty();
}


2.网上大神思路

/**
* 网上大神思路
* 用时:10ms
* beats:65.31%
*/
public boolean isValid2(String s){
Stack<Character> stack = new Stack<Character>();
for(char c:s.toCharArray()){
if(c=='('){stack.push(')');}
else if(c=='{'){stack.push('}');}
else if(c=='['){stack.push(']');}
else if(stack.isEmpty()||stack.pop()!=c){return false;}
}
return stack.isEmpty();
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: