Lintcode Stack 423 Valid Parentheses

Java Version
String.valueOf(c) 方法是把c转化成String类型
思路是将String中的({[中其中一个push进stack中,譬如(,如果stack非空并且下一个c是),那么将(推出stack,依此类推,最后如果stack是空,则为有效的括号对。
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<Character> stack = new Stack<Character>();
    for (Character c : s.toCharArray()){
        if("({[".contains(String.valueOf(c))){
            stack.push(c);
        }else{
            if((!stack.isEmpty()) && isValid(stack.peek(), c))
            stack.pop();
            else
            return false;
        }
            
        }
    return stack.isEmpty();
}

public boolean isValid(char c1, char c2){
    return ((c1=='(' && c2==')') || (c1=='[' && c2==']') || (c1=='{' && c2=='}'));
    
}

C++ Version
C++ 进栈用push_back() 出栈pop_back()
if(stack.size()>0) return false 防止stack里只有左括号的情况
class Solution {
public:

/**
 * @param s A string
 * @return whether the string is a valid parentheses
 */
bool isValidParentheses(string& s) {
    // Write your code here
    vector<char> stack;
    int len = s.length();
    for(int i=0; i<len; i++){
        if(s[i] == '(' || s[i]=='{' || s[i]=='[')
        stack.push_back(s[i]);
        else{
            if(stack.empty()) return false;
            char top = stack[stack.size()-1];
            if(s[i]==')' && top!='(') return false;
            if(s[i]=='}' && top!='{') return false;
            if(s[i]==']' && top!='[') return false;
            stack.pop_back();
        }
    }
    if(stack.size()>0) return false;
    return true;
}

};}


    评论
    添加红包

    请填写红包祝福语或标题

    红包个数最小为10个

    红包金额最低5元

    当前余额3.43前往充值 >
    需支付:10.00
    成就一亿技术人!
    领取后你会自动成为博主和红包主的粉丝 规则
    hope_wisdom
    发出的红包
    实付
    使用余额支付
    点击重新获取
    扫码支付
    钱包余额 0

    抵扣说明:

    1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
    2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

    余额充值