给定一个字符串判断字符串中的括号匹配是否合法

本文介绍了如何使用Java和栈数据结构来判断字符串中的括号匹配是否合法。通过将字符串转为字符数组,用栈来检查左、右括号的配对情况。在遇到右括号时,检查栈是否为空以及与栈顶元素是否匹配。最后,如果栈为空则括号匹配,否则不匹配。此外,还讨论了如何处理更复杂的括号顺序要求,并给出了测试数据和最终实现代码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

思路:

  1. 将给定的字符串,变为字符类型的数组,使用string的toCharArray()
  2. 判断字符是否为括号,这里创建一个函数来判断
  3. 使用栈的结构来匹配括号,从而判断括号是否匹配:`
这里来举例说明一下:
有一组字符串“([])”
我们使用栈来存储数据,当判断为左括号的时候,加入栈里面,栈的特性是先进后出,也就是说最
后一个左括号一定是在栈的最上面,我们通过栈的peek方法来查看最上面的一个数据,如果和第一
个判断为右括号的字符匹配,那么就使用栈的pop方法弹出,这里就是弹出‘[’,那么栈中只有'('
了,继续进行第二个括号的判断
  1. 创建一个栈数组,类型为char,依次判断字符是否为括号,如果为左括号,直接加入栈中
  2. 当碰到右括号的时候,先判断这个时候栈中有没有元素,如果没有,那么右括号过多,如果有和栈顶元素比较,如果配对,那么弹出栈顶元素,继续往下读取字符。
  3. 当所有字读完的时候,栈中如果没有元素,那么说明括号都是配对的,如果有多的元素,那么就是左括号过多

Java代码 :

public class StrIsNotConpare {
   

    public static boolean isKuohao(char c) {
   
        if (c == '(' || c == ')' || c == '[' || c == ']' || c == '{' || c == '}') {
   
            return true;
        }
        return false;
    }

    public static boolean IsCompare() {
   
        Stack<Character> stack = new Stack<>();
        Scanner sc = new Scanner(System.in);
        String s = sc.next();
        char[] chars = s.toCharArray();
        for (int i = 0; i < chars.length; i++) {
   
            char flag = chars[i];
            if (isKuohao(flag)) {
   
                if (flag == '(' || flag == '{' || flag == '[') {
   
                    stack.push(flag);
                } else {
   
                    if (stack
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值