您的位置:首页 > 其它

LeetCode Valid Parentheses

2015-08-18 12:02 274 查看
原题链接在这里:https://leetcode.com/problems/valid-parentheses/

当遇到'(', '[', '{' 时压栈,当遇到')', ']', '}'时观察stk是否为空,若是空,返回false,若不是,pop()出来的第一个元素是否对应,若不对应, 返回false. 读完整个string若stk不空,返回false。若没问题,返回true。

Time Complexity: O(s.length()). Space: O(s.length()).

AC Java:

public class Solution {
public boolean isValid(String s) {
if(s == null || s.length() == 0){
return true;
}

Stack<Character> stk = new Stack<Character>();
for(int i = 0; i<s.length(); i++){
if(s.charAt(i) == '(' || s.charAt(i) == '[' || s.charAt(i) == '{'){
stk.push(s.charAt(i));
}

if((s.charAt(i) == ')' || s.charAt(i) == ']' || s.charAt(i) == '}') && stk.isEmpty()){
return false;
}

if(s.charAt(i) == ')'){
char c = stk.pop();
if(c != '('){
return false;
}
}

if(s.charAt(i) == ']'){
char c = stk.pop();
if(c != '['){
return false;
}
}

if(s.charAt(i) == '}'){
char c = stk.pop();
if(c != '{'){
return false;
}
}
}

if(!stk.isEmpty()){
return false;
}
return true;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: