有效的括号

文章介绍了一种利用栈数据结构判断给定字符串是否为有效括号字符串的方法。通过遍历字符串,遇到左括号时压入栈,遇到右括号时检查栈顶元素是否匹配,不匹配或栈为空则返回false。最后检查栈是否为空,为空则返回true,表示字符串有效。给出的Java代码示例展示了这一过程。
摘要由CSDN通过智能技术生成

题目:

给定一个只包括 '('')''{''}''['']' 的字符串 s ,判断字符串是否有效。

有效字符串需满足:

  1. 左括号必须用相同类型的右括号闭合。
  2. 左括号必须以正确的顺序闭合。
  3. 每个右括号都有一个对应的相同类型的左括号。

可以根据栈来解决这个问题。

首先简单了解一下什么是栈:

1: 栈是一个先入后出的有序列表;

2:栈(stack)是限制线性表中元素的插入和删除只能在线性表的同一端进行的一种特殊线性表。允许插入和删除的一端,为变化的一端,称为栈顶(Top),另一端为固定的一端,称为栈底(Bottom);


3:根据栈的定义可知,最先放入栈中元素在栈底,最后放入的元素在栈顶,而删除元素刚好相反,最后放入的元素最先删除,最先放入的元素最后删除。
 

简单来说:栈就像是在排队,最里面的最后出,最外面的最先出

测试用例:

        s=`(),{},[]`

class Solution {
    public boolean isValid(String s) {
            if(s.isEmpty()) //判断字符串s是否为空 是返回true
            return true;
        Stack<Character> stack=new Stack<Character>();//创建一个栈
        for(char c:s.toCharArray()){ //是用于遍历字符串s中的每个字符
            if(c=='(')    //如果为 ( 向栈里面存入 )
                stack.push(')');
            else if(c=='{')
                stack.push('}');
            else if(c=='[')
                stack.push(']');
            else if(stack.empty()||c!=stack.pop()) //如果c是) ] } 则 判断栈是否为空或 当前c和
                                                    //栈顶元素比较 如果不相同返回 false
                return false;
        }
        if(stack.empty())    //如果栈为空 返回true
            return true;
        return false; 
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值