7-2 括号匹配检测 (10 分)编写程序,对输入的含有大,中,小括号的字符串进行检测,看括号是否是匹配的。 说明:1)仅处理括号匹配性,应该忽略其它字符。 2)括号匹配指的是(与)相配,[与]相配,

7-2 括号匹配检测 (10 分)
编写程序,对输入的含有大,中,小括号的字符串进行检测,看括号是否是匹配的。 说明:1)仅处理括号匹配性,应该忽略其它字符。 2)括号匹配指的是(与)相配,[与]相配,而{总是与}相配。 3)可假定字符串的长度不超过100。 4)括号匹配时,返回出现的总对数(共我多少对左右括号)的,否则输出0。

输入样例1:

{[(a+b)*(c-d)-e]}*[x+y]

输出样例1:

5

输入样例2:

[a+b)*(c-d];

输出样例2:

0
import java.util.Scanner;
import java.util.Stack;

class Main{
   public static void main(String[] args) {
      Scanner sc= new Scanner(System.in);
      String s = sc.nextLine();
      if (isValid(s)) {
         System.out.println(count);
      }else System.out.println(0);
   }

    static int count = 0;

   public static boolean isValid(String s){
      Stack<Character> stack = new Stack<>();
      for (int i = 0 ; i < s.length() ; i++){
         char c = s.charAt(i);
         if (c=='('||c==')'||c=='['||c==']'||c=='{'||c=='}') {
            if(stack.isEmpty()&&(c==')'||c==']'||c=='}')){
               stack.push(c);
            }
            if (c == '(' || c == '[' || c == '{') {
               stack.push(c);
            } else {
               if (c == ')' && stack.peek() == '(') {
                  stack.pop();
                  count++;
               } else if (c == ']' && stack.peek() == '[') {
                  stack.pop();
                  count++;
               } else if (c == '}' && stack.peek() == '{') {
                  stack.pop();
                  count++;
               } else stack.push(c);
            }
         }else continue;
      }
      if (stack.isEmpty()){
         return true;
      }else
         return false;
   }
}

中工青年

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值