括号匹配(java)

AI权益加码!Claude Code、Cursor等20+工具免费用! 购周边限时加赠Coding Plan Lite,畅享主流AI工具!学习进阶更高效! 阅读详情

给定一串字符,不超过100个字符,可能包括括号、数字、字母、标点符号、空格,编程检查这一串字符中的( ) ,[ ],{ }是否匹配。

输入格式:

输入在一行中给出一行字符串,不超过100个字符,可能包括括号、数字、字母、标点符号、空格。

输出格式:

如果括号配对,输出yes,否则输出no。

输入样例1:

sin(10+20)

输出样例1:

yes

输入样例2:

{[}]

输出样例2:

no


程序代码:

import java.util.Scanner;
class Node{
    Node next;
    char data;
    Node(){
    }
    Node(char data){
        this.data = data;
    }
}
class Stack{
  Node top;
  Node base;
  Stack(){
    top = null;
  }
  public void push(char data){
    Node node = new Node(data);
    node.next = top;
    top = node;
  }
  public char getElem(){
    if (top == null)
    return '1';
    return top.data;
  }
  public boolean stackEmpty(){
    if (top == null)
    return true;
    else
    return false;
  }
  public void pop(){
    if (top == null)
      return;
    top = top.next;
  }
}
public class Main{
    public static void main(String[] args){
        Scanner input = new Scanner(System.in);
        String a = input.nextLine();
        Stack stack = new Stack();
        for (int i = 0; i < a.length(); i++){
            switch(a.charAt(i)){
                case '(':stack.push('(');break;
                case '[':stack.push('[');break;
                case '{':stack.push('{');break;
                case ')':
                    if (stack.getElem() != '('){
                        System.out.print("no");
                        System.exit(0);
                    }
                    stack.pop();
                    break;
                case ']':
                    if (stack.getElem() != '['){
                        System.out.print("no");
                        System.exit(0);
                    }
                    stack.pop();
                    break;
                case '}':
                    if (stack.getElem() != '{'){
                        System.out.print("no");
                        System.exit(0);
                    }
                    stack.pop();
                    break;
            }
        }
        if (stack.stackEmpty()){
        System.out.print("yes");
        }
        else
        System.out.print("no");
    }
}

7-10 括号匹配(25 分) 【STL】 7-10 括号匹配(25 分) 给定一串字符,不超过100个字符,可能包括括号、数字、字母、标点符号、空格,编程检查这一串字符中的( ) ,[ ],{ }是否匹配。 输入格式: 输入在一行中给出一行字符串,不超过100个字符,可能包括括号、数字、字母、标点符号、空格。 输出格式: 如果括号配对,输出yes,否则输出no。 输入样例1: sin(10+20) 输出样例1: yes ... 阅读详情

相关推荐

7-3 括号匹配 (20分)(C语言版)

给定一串字符,不超过100个字符,可能包括括号、数字、字母、标点符号、空格,编程检查这一串字符中的( ) ,[ ],{ }是否匹配。 输入格式: 输入在一行中给出一行字符串,不超过100个字符,可能包括括号、数字、字母、标点符号、空格。 输出格式: 如果括号配对,输出yes,否则输出no。 输入样例1: sin(10+20) 输出样例1: yes 输入样例2: {[}] 输出样例2: no ...

ersanxinghe的博客 9586

括号匹配(PTA)

括号匹配

致力于打造中国高端化数字平台 3383

括号匹配

题目内容 括号匹配检验问题。假设字符串中只有三种括号类型,如"()","{}","[]",括号任意嵌套。判断输入的表达式中所含有的括号是否匹配。例如: 表达式 “(…{…{}…[]…})” 匹配。 而表达式 “(…{…[…}…{…]…})” 不匹配。 思路 栈的基本应用。序列中只有左括号入栈,对应右括号出栈。若不对应,或者其他情况就算不匹配。 C++代码实现 #include <iostre...

SalamAbdu的博客 2256

C语言括号匹配

给定一串字符,不超过100个字符,可能包括括号、数字、字母、标点符号、空格,编程检查这一串字符中的( ) ,[ ],{ }是否匹配。 输入格式: 输入在一行中给出一行字符串,不超过100个字符,可能包括括号、数字、字母、标点符号、空格。 输出格式: 如果括号配对,输出yes,否则输出no。 输入样例1: sin(10+20) 输出样例1: yes 输入样例2: {[}] 输出样例2: no 思路:题目输入一些字符串,我们就先保留括号之类的,判断是否匹配。如果遇到左括号,就入栈,如果遇到一个右括号,就与栈顶元

故园归梦的博客 4628

Java 括号匹配问题

这两天正在学习抽象数据结构。想起了当年学习C++时,遇到的括号匹配的问题,反正一直都没有解决它,都怪自己太懒。今天用java简单的实现了,算是一种补充吧。 public class StackDemo { public static void main(String[] args) { String str = "{{{a+b}}}(())"; char [] c = s

Cynthia9023的专栏 2353

括号匹配算法 java_java括号匹配算法

我们经常在各种IDE(集成开发环境)中敲代码。现在的IDE非常智能,并会给出相应提示,还有及时的错误提醒。其中有一项就是括号匹配的检测。今天我们来谈一谈其中的原理。先上图图片发自简书App再上代码import java.io.BufferedReader;import java.io.InputStreamReader;import java.util.Scanner;class Stack{ch...

weixin_39606118的博客 464

括号匹配算法 java_括号匹配算法

括号匹配算法题目来自网络搜集和常考算法,如有侵权请联系我题目描述给出一个仅包含字符'(',')','{','}','['和']',的字符串,判断给出的字符串是否是合法的括号序列括号必须以正确的顺序关闭,"()"和"()[]{}"都是合法的括号序列,但"(]"和"([)]"不合法。示例1输入"["输出false示例2输入"[]"输出trueC++#includeclass Solution {pub...

weixin_35797090的博客 1235

基于JAVA括号匹配算法

基于JAVA括号匹配算法 public class Stack { private int size;//栈的大小 private int top;//栈顶元素下标 初始为-1 private char arr[];//定义数组为栈的容器 public Stack(int size){ arr=new char[size]; top=-1;//初始化栈的时候 栈内无元素 栈顶下标...

qq_44996014的博客 371

【数据结构】Java实现括号匹配问题

问题描述 编写一个类,从标准输入中读取一串包含"(" “)” “[” “]” “{” "}"的字符串,并使用栈来判定其中的括号是否配对完整。例如 “[()]{}{[()()] ()}”程序应该打印true,对于 [(]) 则打印false. 算法 1.将字符串转换为字符数组chars 2.利用for循环,将每一次读取到的字符chars[i]与(,[,{进行比较,若匹配,则将chars[i]压入栈中...

weixin_43395911的博客 2351

括号匹配[Java]

顺序栈实现括号匹配差值比较利用HashMap源代码 差值比较 利用’(’ - ‘)’ 的值是-1,’[’ - ‘]’、’{’ - '}'等的值是-2来判断是否匹配 思路:遍历字符串,若栈为空,或栈顶元素与遍历到的当前元素不匹配则入栈,匹配则弹栈(弹栈后遍历的当前元素不入栈)。若遍历结束后栈为空,则说明括号都匹配上了。 private static void solution01() { String str = "{()[[()]]<>{}()<>}()";

weixin_54986763的博客 1352

Java括号匹配

{} 括号匹配模式 解题思路 栈 import java.util.Scanner; import java.util.Stack; /** * @Author bennyrhys * @Date 2020-09-20 15:24 */ public class T71 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); String s = sc.ne

瑞新の博客:bennyrhys 1538

java实现括号匹配(附带源码)

java实现括号匹配(附带源码)

欢迎来到我的博客!这里是一个专注于计算机技术的分享平台,涵盖编程开发、算法研究、系统架构、软件工程等多个领域。无论你是初学者还是资深开发者,都能在这里找到有价值的内容。 1357

java 括号匹配_java---括号匹配

import java.util.HashMap;import java.util.LinkedList;import java.util.Map;/**括号匹配* 1.用栈实现,如果读取字符为左括号,入栈* 2.如果读取字符为右括号* 栈为空,返回false* 栈不为空,和栈顶比较,是否匹配,匹配出栈一次,不匹配返回false* 3.最后栈不为空,返回false,栈为空返回true*/p...

weixin_39956558的博客 210

java 括号匹配算法

最累的时候,家人是你最好的归宿。 算法的设计思想: 1. 依次扫描各个符号,凡出现左括弧,则进栈 2. 凡出现右括弧,首先检查栈是否空     若栈空,则表明右括号多了     否则和栈顶元素比较,若相匹配,则左括弧出栈, 否则匹配不正确 3. 表达式检验结束时,      若栈空,则匹配正确, 否则表明左括号多了 例子中用到的栈是之前博客中用数组实现的栈 pac

qq_30151545的博客 1159

java用栈实现括号匹配_java括号匹配算法求解(用栈实现)

如何使用栈来判定括号是否匹配对于给定的表达式,可以使用栈来实现括号匹配判定,这个算法在编译器中非常重要,解析器每次读入一个字符,如果字符是一个开分隔符,如(,【,{,入栈,若读入的是闭分隔符),】,},出栈,如果两者匹配,继续解析字符串,如果不匹配,解析器错误算法思路1.创建一个栈2.(当前字符不等于输入的结束字符)(1)如果当前字符不是匹配的字符,判断栈内是否为空,如果栈为空,括号必然不完整(...

weixin_30402231的博客 982

Java实现括号匹配

Java实现括号匹配利用Java的Stack实现括号匹配,包括是否成对出现以及是否正确嵌套。 例如:( ) , { } , [ ] , ( { } [ ] )为正确嵌套,) } , ( { ) } , ( { [ } ] )为非正确嵌套。 以下为实现代码:import java.util.Scanner; import java.util.Stack;public class SymbolMat

EddieTries的博客 1万+

括号匹配Java

题目链接:nyist 2(括号匹配)http://acm.nyist.net/JudgeOnline/problem.php?pid=3 这几天刚刚自己看了下java,还有很多不懂,只能编写简单的程序~~呵呵~代码: import java.io.*; import java.util.*; public class Main { public static int comp(c

许增强 3428

java栈之括号匹配

java栈之括号匹配 栈的一道经典题目,判断括号匹配是否合法,相应题目在leetcode上也有 当我们输入一串括号的时候,一个一个入栈,当出现右括号的时候,就看一下栈里面有没有相对应的左括号,如果没有,那就继续入栈.当整个括号字符串匹配完后,栈应该是空的,否则就是不匹配 import java.util.Scanner; public class stringMatching { static boolean verifyFlag(String s){ LinkStack st

m0_57519203的博客 275
上一篇: 单链表的建立和遍历(Java)
下一篇: 回文判断
qq_35989000
博客等级 码龄10年 5粉丝 7原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值