1. 程式人生 > >leetcode 20 :有效的括號

leetcode 20 :有效的括號

題目

給定一個只包括 '('')''{''}''['']' 的字串,判斷字串是否有效。

有效字串需滿足:

  1. 左括號必須用相同型別的右括號閉合。
  2. 左括號必須以正確的順序閉合。

注意空字串可被認為是有效字串。

示例 1:

輸入: "()"
輸出: true

示例 2:

輸入: "()[]{}"
輸出: true

示例 3:

輸入: "(]"
輸出: false

示例 4:

輸入: "([)]"
輸出: false

示例 5:

輸入: "{[]}"
輸出: true

演算法思想 :括號匹配利用棧先進後出的思想就很容易解決。

    bool isValid(string s) {
     stack<char > a;
    if(s == "")
        return true;
    for(int i = 0;i < s.length();i++)
    {
        if(s[i] == '(' || s[i] == '[' || s[i] == '{')
            a.push(s[i]);
        else
        {
            if(s[i] == ')')
                if(a.empty() || a.top() != '(')
                    return false;
                else
                    a.pop();
               if(s[i] == ']')
                if(a.empty() || a.top() != '[')
                    return false;
                else
                    a.pop();
            if(s[i] == '}')
                if(a.empty() || a.top() != '{')
                    return false;
                else
                    a.pop();        
        }
    }
    if(a.empty())
        return true;
    else
        return    false;
    }