美文网首页
关于括号的几个题目

关于括号的几个题目

作者: 啊磊11 | 来源:发表于2021-03-08 20:14 被阅读0次

1、括号有效性的题目一个字符串只有[]{}()这三种组合而成,判断是否是闭合有效的。

     看到这个首先想到的就是使用栈这种数据结构,闭合有效就对应元素入栈出栈。  

public static boolean isValid(String s){

                    HashMap charmap =new HashMap<>();

                    charmap.put('(',')');

                    charmap.put('[',']');

                    charmap.put('{','}');

                    Stack stack =new Stack();

                    for(int i =0;i<s.length();i++){

                        if(charmap.containsKey(s.charAt(i))){

                        stack.push(s.charAt(i));

                        continue;

                            }

                        if( stack.isEmpty() || s.charAt(i) != charmap.get(stack.pop())){

                        return false;

                           }

                }

                    return stack.isEmpty();        

            }

2、使用n对'()'可以组成的闭合字符串有哪些。

这个题目使用回溯算法,关键在于有多少个( open 就要有多个close)去对应,最后的退出条件就是数量达到了n对

public ArrayList result =new ArrayList();//定义公共的返回结果集

public ArrayList<String> muchString(int n){

backtrace(n,new StringBuilder(),0,0);

return result;

}

public void backtrace(int n, StringBuilder sb,int open,int close){

     if (sb.length() == 2*n){

          result.add(sb.toString());

      }

        if(open < n){

        sb.append('(');

        backtrace(n,sb,open+1,close);

        sb.deleteCharAt(sb.length()-1);

        }

        if(open<close){
        sb.append(')');

        backtrace(n,sb,open,close+1);

        sb.deleteCharAt(sb.length()-1);

        }

}

3、最长有效闭合括号长度是多少。

这个题目使用动态规划,主要是dp数组的定位 在这里我们将dp[]数组定义为以s[i]结尾的有效闭合括号的长度。

public static int zuichang(String s){

        int[] dp =new int[s.length()];

        int max = Integer.MIN_VALUE;

        for(int i =1;i<s.length();i++){

                if(s.charAt(i) ==')'){

                    if(s.charAt(i-1) =='('){

                        if(i>2){

                            dp[i] = dp[i -2] +2;

                        }else{

                                dp[i] =2;

                            }

                        }else if (i-dp[i-1] >0 && s.charAt(i-dp[i-1] -1) =='('){

                        dp[i] = dp[i-1] + (i -dp[i-1] >1?dp[i -dp[i-1]-2]:0)  +2;

                        }

                    }

                    max = Math.max(max,dp[i]);

    }

return max;

}

相关文章

  • 关于括号的几个题目

    1、括号有效性的题目一个字符串只有[]{}()这三种组合而成,判断是否是闭合有效的。 看到这个首先想到的就是使...

  • 1111-有效括号的嵌套深度

    有效括号的嵌套深度 题目 有效括号字符串 仅由 "(" 和 ")" 构成,并符合下述几个条件之一: 空字符串连接,...

  • 【Python题目】括号匹配

    现在给你一个只包含括号""的字符串,问你至少加多少个字符是合法的,对于字符串合法的定义为: 字符串为空是合法的。 ...

  • LeetCode-20 有效的括号

    题目:20. 有效的括号 难度:简单 分类:栈 解决方案:入栈出栈 今天我们学习第20题有效的括号,这是一道关于栈...

  • 利用堆栈解决的问题

    有效括号问题 题目 解法 遇到左括号时push,遇到右括号pop。 等待时间问题 题目 解法 将天数指针存入堆栈中...

  • 数独标志

    关于数独标志的几个题目。

  • 【LeetCode】921. 使括号有效的最少添加

    LeetCode算法题目——栈 题目 给定一个由 '(' 和 ')' 括号组成的字符串 S,我们需要添加最少的括号...

  • 回溯算法和深度优先搜索(二)

    先看一道题目: 括号生成。 输入一个整数 ,罗列出所有有效的括号组合。有效的括号组合是指 左括号开始,右括号结束,...

  • 编程练习-字符串展开

    题目来源:华为实习笔试题 给定一个字符串,其中含有括号(大括号,中括号,小括号),括号可以嵌套,且保证括号是配对的...

  • 2022-01-07 1614. 括号的最大嵌套深度

    之前做过类似的括号匹配题目。左括号+1,右括号-1,判断出现时的最大值。java版本

网友评论

      本文标题:关于括号的几个题目

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