Valid Parentheses -- LeetCode

本文介绍了一种使用栈数据结构验证括号字符串有效性的算法。通过遍历字符串,遇到左括号入栈,遇到右括号检查栈顶元素是否匹配。算法时间复杂度为O(n),空间复杂度也为O(n)。

分享一下我老师大神的人工智能教程。零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到我们人工智能的队伍中来!https://blog.youkuaiyun.com/jiangjunshow

                原题链接:  http://oj.leetcode.com/problems/valid-parentheses/  

这道题思路比较简单,主要考察对栈数据结构的操作。遇到左括号就入栈,遇到右括号看栈顶左括号是否与当前右括号匹配,匹配继续,否则返回false。算法的时间复杂度是O(n),空间复杂度也是O(n)。代码如下: 

public boolean isValid(String s) {    if(s==null || s.length()==0)        return true;    LinkedList<Character> stack = new LinkedList<Character>();    for(int i=0;i<s.length();i++)    {        switch(s.charAt(i))        {            case '(':            case '{':            case '[':                stack.push(s.charAt(i));                break;            case ')':                if(stack.isEmpty() || stack.pop()!='(')                    return false;                break;            case '}':                if(stack.isEmpty() || stack.pop()!='{')                    return false;                break;            case ']':                if(stack.isEmpty() || stack.pop()!='[')                    return false;                break;             default:                break;        }    }    if(stack.isEmpty())        return true;    return false;}
实现中的小陷阱是注意结束的时候要判一下栈是否为空,不为空仍是不合法的。

           

分享一下我老师大神的人工智能教程。零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到我们人工智能的队伍中来!https://blog.youkuaiyun.com/jiangjunshow

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值