lintcode--有效的括号序列

给定一个字符串所表示的括号序列,包含以下字符:'(', ')''{''}''[' and ']', 判定是否是有效的括号序列。

样例

括号必须依照 "()" 顺序表示, "()[]{}" 是有效的括号,但"([)]"则是无效的括号。



public class Solution {
    /**
     * @param s A string
     * @return whether the string is a valid parentheses
     */
    public boolean isValidParentheses(String s) {
        // Write your code here
        Stack ss = new Stack();
        for(int i=0;i             char t  = s.charAt(i);
            
            if(t == '(' || t == '[' || t == '{'){
                ss.push(t);
            }
            else if(!ss.isEmpty() && isTrue(ss.peek(),t)){
                ss.pop();
            }else{
                return false;
            }
        }
        return ss.isEmpty();
    }
    public boolean isTrue(char c1,char c2){
        return (c1=='(' &&c2 == ')') || (c1 =='[' && c2 == ']') || (c1 =='{' && c2 =='}');
    }
}
 /**
     * @param s A string
     * @return whether the string is a valid parentheses
     * 首先我们需要知道,此题只是让我们判断括号序列是否合法,不是表达式是否合法,因此我们就假定只有括号,或者说我们只考虑括号,不考虑其他的字符。
其次,我们知道括号是否有效:
第一,括号要成对出现,例如出现左圆括号('(')n次,则右圆括号(')')也必须出现n次,对于方括号和花括号也是一样的;
第二,括号可以嵌套,但是从里到外一定是满足可以成对抵消的,而不能够是错开的,这个从样例就可以看出来。


那么我的思路就是借用栈这个数据结构来解此题。
1. 遇到左括号,全部压入栈中;
2. 遇到右括号或其他,判断栈顶的元素是否是相对应的左括号,若是则弹出栈顶元素,若不是则返回false,若栈为空,也返回false;
     */
public class Solution {
    public boolean isValidParentheses(String s) {
        Stack stack = new Stack();
        for (Character c : s.toCharArray()) {
       if ("({[".contains(String.valueOf(c))) {
                stack.push(c);
            } 
            else if (!stack.isEmpty() && is_valid(stack.peek(), c)) {
                   stack.pop();
            } else {
                   return false;
            }
       }
       return stack.isEmpty();//为空证明全部弹出
    }


    private boolean is_valid(char c1, char c2) {
        return (c1 == '(' && c2 == ')') || (c1 == '{' && c2 == '}')
            || (c1 == '[' && c2 == ']');
    }
    
    public boolean isValidParentheses(String s){
        Stack stack = new Stack();
        for(Character c : s)
    }
}














你可能感兴趣的:(lintcode)