首页 > 其他 > 详细

p29 有效的括号 (leetcode 20)

时间:2020-03-14 12:13:56      阅读:55      评论:0      收藏:0      [点我收藏+]

一:解题思路

利用一个辅助栈,当遇到左符号时候,入栈。当遇到右符号时候,与栈顶元素相比是否相等,按照这样的方式将字符串遍历循环下去,看看最后栈是否为空。

二:完整代码示例 (C++版和Java版)

C++

//Time:O(n),Space:O(n)
class Solution
{
public:
    bool match(char a, char b)
    {
        return ((a==()&&(b==))) ||
            ((a==[)&&(b==])) ||
            ((a=={)&&(b==}));
    }

    bool isValid(string s)
    {
        stack<char> stack;

        if (s.size() == 0) return true;

        for (int i = 0; i < s.size(); i++)
        {
            if ((s[i] == () || (s[i] == [) || (s[i] == {))
            {
                stack.push(s[i]);
            }
            else if ((s[i] == )) || (s[i] == ]) || (s[i] == }))
            {
                if ((!stack.empty()) && (match(stack.top(),s[i])))
                {
                    stack.pop();
                }
                else
                {
                    return false;
                }
            }
        }

        return stack.empty();
    }
};

Java:

class Solution
{
    public boolean match(char a,char b)
    {
        return ((a==()&&(b==)))||
                ((a==[)&&(b==]))||
                ((a=={)&&(b==}));
    }
    
    public boolean isValid(String s)
    {
        Stack<Character> stack=new Stack<>();

        if (s.length() == 0) return true;

        for (int i = 0; i < s.length(); i++)
        {
            if ((s.charAt(i) == () || (s.charAt(i) == [) || (s.charAt(i) == {))
            {
                stack.push(s.charAt(i));
            }
            else if ((s.charAt(i) == )) || (s.charAt(i) == ]) || (s.charAt(i) == }))
            {
                if ((!stack.isEmpty()) && (match(stack.peek(),s.charAt(i))))
                {
                    stack.pop();
                }
                else
                {
                    return false;
                }
            }
        }

        return stack.isEmpty();
    }
};

 

p29 有效的括号 (leetcode 20)

原文:https://www.cnblogs.com/repinkply/p/12490695.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!