关于栈的学习-01

[leetcode] 22:有效的括号

问题描述

给定一个只包含括号的字符串,判断字符串是否有效。
有效字符串需满足:
1)左括号必须用相同类型的右括号闭合。
2)左括号必须以正确的顺序闭合。
注: 空字符串也可被认为是有效字符串
示例

1) 输入: "()"
   输出: true
2) 输入: "()[]{}"
   输出: true
3) 输入: "([)]"
    输出: false
解题思路

依次遍历字符串元素,并将元素压入堆栈中,当遍历元素与栈顶元素相匹配,构成一个有效括号时,栈顶元素出栈。遍历完所有字符串时若栈为空,则每个括号均能得到匹配,字符串有效;否则字符串无效。
1)新建一个空的堆栈;
2)依次遍历字符串元素,令c表示当前元素的位置;
3)将首位元素压入栈中,c指向下一元素;
4)判断c对应元素是否与栈顶元素构成括号对"()“或括号对”[]“或括号对”{}",若是,栈顶元素出栈,更新栈顶元素,c指向下一元素位,重复执行步骤4);
5)执行完循环操作后,判断是否堆栈为空,若为空表明所有括号均配对,字符串有效;若不为空表明存在无法配对的括号,字符串无效。
java程序如下

class Solution {
    public boolean isValid(String s) {
        Stack<Character> stack = new Stack<>();
        char[] c=s.toCharArray();
        for (char c1:c){
            if(stack.empty()){
                stack.push(c1);
            }
            else if((c1==')' && stack.peek()=='(')||(c1==']' && stack.peek()=='[') || (c1=='}' && stack.peek()=='{')){
                stack.pop();
            }
            else{
                stack.push(c1);
            };
        }
        return stack.empty();
    }
}
总结

通过刷leetcode完成对栈的学习,及java编程语言中栈的使用方式

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值