栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

7-4 括号匹配 (10 分)java版

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

7-4 括号匹配 (10 分)java版

检查一段C语言代码的小括号( )、 中括号 [ ] 和大括号{ } 是否匹配。

输入格式:
在一行中输入一段C语言代码,长度不超过1000个字符(行末以换行符结束)。

输出格式:
第一行输出左括号的数量和右括号的数量,中间以一个空格间隔。
若括号是匹配的,在第二行打印YES,否则打印NO。

输入样例1:

for(int i=0; iAdj[i][j])); }

输出样例1:

8 8
YES

输入样例2:

for(int i=0; i 

输出样例2:

2 2
NO
import java.util.*;

public class Main {

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        char[] s = sc.nextLine().toCharArray();
        Stack stk = new Stack();
        int left = 0, right = 0;
        for (char x : s) {
            if (left_kuohao(x)) {
                left++;
                stk.add(x);
            } else if (right_kuohao(x)) {
                right++;
                if (!stk.isEmpty() && match(stk.peek(), x)) {
                    stk.pop();
                } else {
                    stk.add(x);
                }
            }
        }
        System.out.println(left + " " + right);
        if (left != right || !stk.isEmpty()) {
            System.out.println("NO");
        } else {
            System.out.println("YES");
        }

    }

    public static boolean left_kuohao(char x) {
        return x == '{' || x == '[' || x == '(';
    }

    public static boolean right_kuohao(char x) {
        return x == '}' || x == ']' || x == ')';
    }

    public static boolean match(char a, char b) {
        return (a == '{' && b == '}') ||
                (a == '(' && b == ')') ||
                (a == '[' && b == ']');
    }
}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/656510.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号