每日一练(2021/9/10)

1、有效的括号
给定一个只包含’(’,’)’,’{’,’},’[’,’]’,的字段串s,判断字符串是否有效
有效字符串需满足:

  • 左括号必须用相同类型的有括号闭合
  • 左括号必须以正确的顺序闭合
  • 1 <= s.length <= 10^4
  • s仅由’(){}[]'组成
   public boolean isVaild(String s) {
       char[] parentheses = {
               '(', '[', '{', ')', ']', '}'
       };
       int i = 0;
       char c;
       int[] sum = {0, 0, 0};
       Stack<Integer> top = new Stack<>();
       while (i < s.length()) {
           c = s.charAt(i);
           for (int j = 0; j <= 2; j++) {
               if (c == parentheses[j]) {
                   top.push(j);//入栈
                   sum[j]++;
               } else if (c == parentheses[j + 3]) {
                   ##返回栈顶元素
                   if (top.size() == 0 || top.peek() != j) {
                       return false;
                   }
                   top.pop();//出栈
                   sum[j]--;
               } else {

               }
           }
           i++;
       }
       for (int j = 0; j <= 2; j++) {
           if (sum[j] != 0) {
               return false;
           }
       }
       return true;

   }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值