leetcode 32.最长有效括号

class Solution
{
public:
    int longestValidParentheses(string &s)
    {
        stack<int> zz;
        int m = 0;
        for (auto &i : s)
        {

            if (i == '(')
            {

                zz.push(0);
            }
            else
            {
                int temp = 0;
                bool flag = false;
                while (!zz.empty())
                {
                    int temp2 = zz.top();

                    if (temp2 == 0)
                    {
                        if (flag)
                            break;
                        flag = true;
                        temp += 2;
                    }
                    else
                    {
                        temp += temp2;
                    }
                    zz.pop();
                }
                if (flag)
                {
                    zz.push(temp);
                    m = max(temp, m);
                }
                else
                {
                    // while (!zz.empty())
                    //     zz.pop();
                    zz={};                    
                }
            }
        }
        return m;
    }
};

C++清空std::stack

如存在一个

stack<int> a;

由于stack没有clear函数,可以使用以下方法进行清空

a={};

发布日期:
分类:C++