Thursday, October 10, 2013

Valid Parentheses

Q:
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.

A:
就是 大一的时候的 stack 的课后题,   用一个stack, 来保持左括号。  -----


------------转换成数字是没有必要的。  完全是多余********************
Mistakes:
1: 又一次,华丽丽地,忘了update i,j 指针。
2: 题意没有领会透彻。  ()[]{}  也是可以的。

--------------------2nd pass--------------------
思想同上,但是不用变成数字了。

public class Solution {
    public boolean isValid(String s) {
        if(s==null || s.length()==0)
            return true;
        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.isEmpty() || stack.pop()!='(')
                    return false;
            }else if (ch==']'){
                if(stack.isEmpty() || stack.pop()!='[')
                    return false;
            }else // if (ch=='}'){
                if(stack.isEmpty() || stack.pop()!='{')
                    return false;
        }
        return stack.isEmpty();
    }
}
Learned:
LC 上的题目,基本都是应该十几二十行搞定的。
如果if 里面再带一层if。  然后后面还有 else的话, else会找最近的if (如果没有大括号来帮忙)

No comments:

Post a Comment