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;
        }
    唯有热爱方能抵御岁月漫长。
  • 相关阅读:
    每天一个linux命令---mount
    java反射机制
    每天一个linux命令---netstat
    oracle调试存储过程
    ora-14400插入的分区关键字未映射到任何分区---oracle数据库表过期问题
    Java类加载
    nginx学习笔记
    web工程spring+ibatis单元测试
    每天一个Linux命令---tcpdump
    每天一个linux命令---导出到文件
  • 原文地址:https://www.cnblogs.com/syq816/p/15551181.html
Copyright © 2011-2022 走看看