博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
刷题第三天,根本就没用过堆栈,刷题刷到了,看了一下,知道点了,这回用一用哈哈哈 ----- 20. Valid Parentheses...
阅读量:6338 次
发布时间:2019-06-22

本文共 979 字,大约阅读时间需要 3 分钟。

hot3.png

栈最典型的应用就是验证配对情况,注意事项:栈在peek(查看堆栈顶部的对象,但不从堆栈中移除它)、pop(移除堆栈顶部的对象,并作为此函数的值返回该对象)操作前都要验证非空,否则会报错StatckEmptyException。

栈的方法:

E push(E item)   把项压入堆栈顶部。 

E pop()   移除堆栈顶部的对象,并作为此函数的值返回该对象。 

E peek()    查看堆栈顶部的对象,但不从堆栈中移除它。    

boolean empty()   测试堆栈是否为空。   

int search(Object o)   返回对象在堆栈中的位置,以 1 为基数。

-------------------------------------------------分割线-----------------------------------------------------

class Solution {

    public boolean isValid(String s) {
        
        //验证符号是否成对出现
        if(s.length() % 2 != 0) return false;
        
        Stack<Character> stack = new Stack<Character>();
        
        for(char c : s.toCharArray()){
            
            if(c == '('){
                stack.push(')');
            }else if(c == '{'){
                stack.push('}');
            }else if(c == '['){
                stack.push(']');
            }else if(stack.empty() || stack.pop() != c){
                return false;
            }
        }
        return stack.empty();
    }
}

总结:主要在stack.isEmpty() || stack.pop() != c中,当输入“()”时,‘(’入栈,当‘)’时,先判断当前栈是否为空,返回false,然后栈顶移除字符,当字符与‘)’不相同时返回false,循环结束,返回最后结果。我是看LeetCode答案了,要不然我写不出来,这道题挺好的,让我了解了Stack,并进行使用

转载于:https://my.oschina.net/u/3141521/blog/1634959

你可能感兴趣的文章
JavaScript—DOM编程核心.
查看>>
JavaScript碎片
查看>>
Bootstrap-下拉菜单
查看>>
soapUi 接口测试
查看>>
【c学习-12】
查看>>
工作中MySql的了解到的小技巧
查看>>
loadrunner-2-12日志解析
查看>>
C# Memcached缓存
查看>>
正则表达式
查看>>
mysql [ERROR] Can't create IP socket: Permission denied
查看>>
PBRT笔记(4)——颜色和辐射度
查看>>
CustomView的手势缩放总结
查看>>
linux复制指定目录下的全部文件到另一个目录中,linux cp 文件夹
查看>>
CentOS yum安装mysql
查看>>
OceanBase笔记1:代码规范
查看>>
[Algorithms] Longest Increasing Subsequence
查看>>
MAC下GitHub命令操作
查看>>
springboot之filter/listener/servlet
查看>>
Thinkphp --- 去掉index.php
查看>>
Spring+SpringMVC+MyBatis深入学习及搭建(十一)——SpringMVC架构
查看>>