zoukankan      html  css  js  c++  java
  • 921. 使括号有效的最少添加

    给定一个由 '(' 和 ')' 括号组成的字符串 S,我们需要添加最少的括号( '(' 或是 ')',可以在任何位置),以使得到的括号字符串有效。

    从形式上讲,只有满足下面几点之一,括号字符串才是有效的:

    它是一个空字符串,或者
    它可以被写成 AB (A 与 B 连接), 其中 A 和 B 都是有效字符串,或者
    它可以被写作 (A),其中 A 是有效字符串。
    给定一个括号字符串,返回为使结果字符串有效而必须添加的最少括号数。

    示例 1:

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

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

    输入:"()"
    输出:0
    示例 4:

    输入:"()))(("
    输出:4
     

    提示:

    S.length <= 1000
    S 只包含 '(' 和 ')' 字符。

    来源:力扣(LeetCode)
    链接:https://leetcode-cn.com/problems/minimum-add-to-make-parentheses-valid
    著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

    class Solution {
    public:
        int minAddToMakeValid(string S) {
            int res=0;
            stack<char> my_stack;
            int len = S.length();
            for (int i = 0; i < len; i++)
            {
                if (my_stack.empty() && S[i] == '(')
                    my_stack.push('(');
                else if (my_stack.empty() && S[i] == ')')
                    res++;
                else if (my_stack.top() == '(' && S[i] == ')')
                    my_stack.pop();
                else if (my_stack.top() == S[i])
                    my_stack.push(S[i]);
            }
            while (!my_stack.empty())
            {
                res++;
                my_stack.pop();
            }
            return res;
        }
    };
  • 相关阅读:
    金融理财
    股权穿透图资料总结
    v-cloak指令用法
    前端跨域解决方案
    better-scroll
    vant-list实现下拉加载更多
    webpack原理
    .NET Framwork WebApi 添加swagger 在线接口文档步骤
    CORE API 限流,防止,链接数过多而崩溃。
    VS2019推送代码到GIT仓库
  • 原文地址:https://www.cnblogs.com/lancelee98/p/13245909.html
Copyright © 2011-2022 走看看