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

    题目描述:

    给定一个由 '(' 和 ')' 括号组成的字符串 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
    著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

    解题思路:

    其实就是简单版的括号匹配,用栈结构实现

    public int minAddToMakeValid(String s) {
            int min_count = 0;
            Stack<String> brackets = new Stack<>();
            char [] bracket_list = s.toCharArray(); //将字符串转为char数组
            for (char b:bracket_list) {
                if("(".equals(String.valueOf(b))){
                    //左括号入栈
                    brackets.push(String.valueOf(b));
                }else{
                    //右括号
                    if(brackets.empty()){
                        min_count++;
                    }else{
                        brackets.pop();
                    }
                }
            }
            min_count += brackets.size();
            return min_count;
        }
    唯有热爱方能抵御岁月漫长。
  • 相关阅读:
    NativeXml (1):下载、安装、测试
    NativeXml (7):添加属性
    NativeXml (9):读取
    NativeXml (2):对象建立
    NativeXml (3):保存
    NativeXml (6):添加节点
    NativeXml (10):编辑
    NativeXml (5):事件
    博客园现代化建设—用 Entity Framework 与 Json.NET 实现数据的按需更新
    Entity Framework 小知识分享
  • 原文地址:https://www.cnblogs.com/syq816/p/15551181.html
Copyright © 2011-2022 走看看