浅谈 有效的括号 问题

有效的括号

给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串,判断字符串是否有效。

有效字符串需满足:
左括号必须用相同类型的右括号闭合。
左括号必须以正确的顺序闭合。
注意空字符串可被认为是有效字符串。

思路:
利用栈先进后出的特性,遍历字符串,当遇到左括号时,直接入栈,遇到右括号时考虑出栈元素是否和相应的左括号对应。为了后面出栈代码好写,故在入栈是压入对应的右括号。

  1. 空串为有效字符串
  2. 奇位字符串不是有效字符串
  3. 遍历全部字符串,最后栈为空则所有括号都有对应,故为有效字符串
class Solution {
    
    
public:
    bool isValid(string s) {
    
    
        if(!s.size()) return true;  
        if(s.size() % 2 != 0) return false;
        stack<char> stk;
        for(char ch : s){
    
    
            switch(ch){
    
    
                case '(':
                stk.push(')');break;
                case '{':
                stk.push('}');break;
                case '[':
                stk.push(']');break;
                case ')':
                case '}':
                case ']':
                if(!stk.empty() && stk.top() == ch) stk.pop();
                else return false;
                break;
                default:
                return false;
            }
        }
        return stk.empty();
    }
};

猜你喜欢

转载自blog.csdn.net/weixin_48033173/article/details/112077999