美文网首页
8,有效的括号/数组与字符串

8,有效的括号/数组与字符串

作者: Buyun0 | 来源:发表于2018-09-11 09:34 被阅读0次

    有效的括号

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

    有效字符串需满足:

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

    示例 1:
    输入: "()"
    输出: true

    示例 2:
    输入: "()[]{}"
    输出: true

    示例 3:
    输入: "(]"
    输出: false

    示例 4:
    输入: "([)]"
    输出: false

    示例 5:
    输入: "{[]}"
    输出: true

    思路:利用栈的入门题,将符号串如果是前括号一个个推入栈中,如果是后括号取栈顶检验。
    时间复杂度:O(n)每个符号只循环一次
    空间复杂度:O(n)需要保存维护一个保存最多n个符号的栈

    class Solution {
    public:
        bool isValid(string s) {
            stack<char> f;
            for(int i=0;i<s.size();i++){
                if(s[i] == '('||s[i] == '{'|| s[i] == '['){
                    f.push(s[i]);
                }else if(s[i] == ')'){
                    if(f.empty()||f.top() != '(')return false;
                    
                    f.pop();
                }else if(s[i] == ']'){
                    if(f.empty()||f.top() != '[')return false;
                    
                    f.pop();
                }else if(s[i] == '}'){
                    if(f.empty()||f.top() != '{')return false;
                    
                    f.pop();
                }else{
                    return false;
                }
            }
            if(!f.empty())return false;
            return true;
        }
    };
    

    相关文章

      网友评论

          本文标题:8,有效的括号/数组与字符串

          本文链接:https://www.haomeiwen.com/subject/pzyygftx.html