• LQ0240 括号问题【程序填空】


    题目来源:蓝桥杯2012初赛 Java C组G题

    题目描述
    本题为代码补全填空题,请将题目中给出的源代码补全,并复制到右侧代码框中,选择对应的编译语言(C/Java)后进行提交。若题目中给出的源代码语言不唯一,则只需选择其一进行补全提交即可。复制后需将源代码中填空部分的下划线删掉,填上你的答案。提交后若未能通过,除考虑填空部分出错外,还需注意是否因在复制后有改动非填空部分产生错误。

    下面的代码用于判断一个串中的括号是否匹配。

    所谓匹配是指不同类型的括号必须左右呼应,可以相互包含,但不能交叉。

    若匹配,则输出 true,否则输出 false。

    例如:

    …(…[…]…)… 是允许的;

    …(…[…)…]… 是禁止的。

    请仔细阅读代码,并填写划线部分缺失的代码。

    源代码
    Java

    import java.util.*;
    public class Main
    {
        public static boolean isGoodBracket(String s)
        {
            Stack<Character> a = new Stack<Character>();
            
            for(int i=0; i<s.length(); i++)
            {
                char c = s.charAt(i);
                if(c=='(') a.push(')');
                if(c=='[') a.push(']');
                if(c=='{') a.push('}');
                
                if(c==')' || c==']' || c=='}')
                {
                    if(____________________) return false;    // 填空
                    if(a.pop() != c) return false;
                }
            }
            
            if(___________________) return false;  // 填空
            
            return true;
        }
        
        public static void main(String[] args)
        {
            System.out.println( isGoodBracket("...(..[.)..].{.(..).}..."));
            System.out.println( isGoodBracket("...(..[...].(.).){.(..).}..."));
            System.out.println( isGoodBracket(".....[...].(.).){.(..).}..."));
            System.out.println( isGoodBracket("...(..[...].(.).){.(..)...."));
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34

    问题分析
    2个空分别填入“a.empty()”和“!a.empty()”

    AC的Java语言程序如下:

    import java.util.*;
    public class Main
    {
        public static boolean isGoodBracket(String s)
        {
            Stack<Character> a = new Stack<Character>();
            
            for(int i=0; i<s.length(); i++)
            {
                char c = s.charAt(i);
                if(c=='(') a.push(')');
                if(c=='[') a.push(']');
                if(c=='{') a.push('}');
                
                if(c==')' || c==']' || c=='}')
                {
                    if(a.empty()) return false;    // 填空
                    if(a.pop() != c) return false;
                }
            }
            
            if(!a.empty()) return false;  // 填空
            
            return true;
        }
        
        public static void main(String[] args)
        {
            System.out.println( isGoodBracket("...(..[.)..].{.(..).}..."));
            System.out.println( isGoodBracket("...(..[...].(.).){.(..).}..."));
            System.out.println( isGoodBracket(".....[...].(.).){.(..).}..."));
            System.out.println( isGoodBracket("...(..[...].(.).){.(..)...."));
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
  • 相关阅读:
    学习记录——day29 网络编程
    Python基础知识整理 01-变量、数据类型、运算符、判断语句、循环语句
    html网页如何获取后台数据库的数据(html + ajax + php + mysql)
    CListBox 列表框
    丁鹿学堂前端培训:typescript之抽象类和接口简介
    【Unity3D赛车游戏优化篇】新【八】汽车实现镜头的流畅跟随,以及不同角度的切换
    Django学习日志07
    【小程序】集成echarts问题记录
    web前端Vue 报错:Uncaught (in promise) TypeError: Cannot read properties of nu
    Java学习笔记5.2.1 List接口 - ArrayList类
  • 原文地址:https://blog.csdn.net/tigerisland45/article/details/128006735