用户输入括号是否匹配

简介: 用户输入括号是否匹配

 

public class brackets {
    /*算法*/
    public static boolean isMatch(String str) {        
        int i = 0;
        char e, x;
        SqStackClass<Character> st = new SqStackClass<Character>();    //建立一个顺序栈
        while (i < str.length()) {
            e = str.charAt(i);
            if (e == '(' || e == '[' || e == '{') {
                st.push(e);                             //将左括号进栈
            } else {
                if (e == ')') {
                    if (st.empty()) {
                        return false;        //栈空返回false
                    }
                    if (st.peek() != '(') {
                        return false;    //栈顶不是匹配的'('返回false
                    }
                    st.pop();
                }
                if (e == ']') {
                    if (st.empty()) {
                        return false;               //栈空返回false
                    }
                    if (st.peek() != '[') {
                        return false;//栈顶不是匹配的'['返回false
                    }
                    st.pop();
                }
                if (e == '}') {
                    if (st.empty()) {
                        return false;//栈空返回false
                    }
                    if (st.peek() != '{') {
                        return false;//栈顶不是匹配的'{'返回false
                    }
                    st.pop();
                }
            }
            i++;                                        //继续遍历str
        }
        if (st.empty()) {
            return true;//栈空返回true
        }
        else {
            return false;//栈不空返回false
        }
    }
    public static void main(String[] args) {
        System.out.println("-------测试1----------");
        String str = "([)]";
        if (isMatch(str))
            System.out.println(str + "中括号是匹配的");
        else
            System.out.println(str + "中括号不匹配");
        System.out.println("-----------测试2------------");
        str = "([])";
        if (isMatch(str))
            System.out.println(str + "中括号是匹配的");
        else
            System.out.println(str + "中括号不匹配");
    }

image.gif

目录
相关文章
|
6月前
|
JavaScript 前端开发 Java
|
5月前
|
Java
正则表达式匹配数字的几种方法比较
正则表达式匹配数字的几种方法比较
|
6月前
|
算法 C语言
编写一个程序,提示用户输入大写字母,如果输入的不是大写字母,提示用户输入大写字母;如果是大写字母,使用嵌套循环以下面金字塔型的格式打印字母
该内容包括两部分:一段C语言代码和三张图片。代码是一个程序,它接收一个大写字母输入,然后打印出一个由正序和倒序排列的字母组成的图案。图片似乎是与编程或算法相关的示例输出。由于字符限制,无法提供所有图片的详细描述,但它们可能显示了代码运行的结果。
45 0
|
6月前
|
C++
HRBUST - 1170(判断括号是否匹配)
HRBUST - 1170(判断括号是否匹配)
|
6月前
|
固态存储 Python
正则表达匹配任意单个字符
正则表达匹配任意单个字符
199 4
|
机器学习/深度学习 Shell C++
正则表达式普通字符、非打印字符、特殊字符、限定符的应用、定位符、元字符(规则,匹配,和实际使用)与运算符优先级
正则表达式普通字符、非打印字符、特殊字符、限定符的应用、定位符、元字符(规则,匹配,和实际使用)与运算符优先级
280 0
从键盘任意输入一个字符,编程判断是否是字母(包括大小写)
从键盘任意输入一个字符,编程判断是否是字母(包括大小写)
518 0
从键盘任意输入一个字符,编程判断是否是字母(包括大小写)
|
算法 前端开发 JavaScript
【前端算法】判断一个字符串的括号是否成对匹配
使用typescript完成判断一个字符串的括号是否成对匹配的过程
131 0
|
Shell Linux Perl
Shell的正则表达式入门、常规匹配、特殊字符:^、$、.、*、字符区间(中括号):[ ]、特殊字符:\、匹配手机号
Shell的正则表达式入门、常规匹配、特殊字符:^、$、.、*、字符区间(中括号):[ ]、特殊字符:\、匹配手机号
Shell的正则表达式入门、常规匹配、特殊字符:^、$、.、*、字符区间(中括号):[ ]、特殊字符:\、匹配手机号