[leetcode 20] Valid Parentheses

原创 2015年11月19日 13:06:28

Question:

Given a string containing just the characters '(', ')', '{', '}', '[' and ']', determine if the input string is valid.


The brackets must close in the correct order, "()" and "()[]{}" are all valid but "(]" and "([)]" are not.


分析:

类似编译系统的匹配问题,用栈来实现;

因为(', ')', '{', '}', '[' and ']',都是固定搭配的,遇到左半部分则进展,遇到与栈顶相匹配的右半部分则出栈。

字符串S为空是返回true;

如果字符串S的长度为奇数,则肯定有不匹配的,返回false;

比如:字符串s为“([{}])”,遇到第一个字符‘('时,进栈,判断下一个字符是否为’)‘,是则将’(‘出栈,否则将下一个字符进栈。以此类推判断,知道判断完最后一个元素后,如果栈为空,则说明字符串是有效的,否则无效。


代码如下:

<span style="font-size:14px;">class Solution {
public:
    bool isValid(string s) {
        stack<char> st;
        if(s.length() == 0)
            return true;
        if(s.length() % 2 == 1)
            return false;
        for(int i = 0; i < s.length(); ++i){
            if(st.empty()){
                st.push(s[i]);
            }
            else{
                char c = st.top();
                switch(c){
                    case '(':
                        if(s[i] == ')')
                            st.pop();
                        else
                            st.push(s[i]);
                        break;
                    case '[':
                        if(s[i] == ']')
                            st.pop();
                        else
                            st.push(s[i]);
                        break;
                    case '{':
                        if(s[i] == '}')
                            st.pop();
                        else
                            st.push(s[i]);
                        break;
                    default:
                        st.push(s[i]);
                        break;
                }
            }
        }
        return st.empty();
    }
};</span>


版权声明:本文为博主原创文章,未经博主允许不得转载。

【LeetCode-面试算法经典-Java实现】【020-Valid Parentheses(括号验证)】

【020-Valid Parentheses(括号验证)】【LeetCode-面试算法经典-Java实现】【所有题目目录索引】原题  Given a string containing just th...
  • DERRANTCM
  • DERRANTCM
  • 2015年07月22日 07:26
  • 2758

【LeetCode】- Valid Parentheses(有效的括号)

[ 问题: ] Given a string containing just the characters '(', ')', '{', '}', '[' and ']', determine if ...
  • zdp072
  • zdp072
  • 2014年08月29日 14:49
  • 848

【LeetCode-面试算法经典-Java实现】【022-Generate Parentheses(生成括号)】

【022-Generate Parentheses(生成括号)】【LeetCode-面试算法经典-Java实现】【所有题目目录索引】原题  Given n pairs of parentheses, ...
  • DERRANTCM
  • DERRANTCM
  • 2015年07月23日 07:52
  • 2367

leetcode 地铁看题

1.  5.Longest Palindromic Substring Given astring s, find the longest palindromic substring in s.Yo...
  • m0_37693059
  • m0_37693059
  • 2017年08月03日 23:53
  • 209

和大神们学习每天一题(leetcode)-Valid Parentheses

Given a string containing just the characters '(', ')', '{', '}', '[' and ']', determine if the in...
  • majunyangyang
  • majunyangyang
  • 2014年12月07日 16:00
  • 181

leetcode刷题,总结,记录,备忘 301

leetcode301Remove Invalid Parentheses Remove the minimum number of invalid parentheses in order to...
  • guicaisa
  • guicaisa
  • 2016年05月02日 20:23
  • 343

leetcode 题解代码整理 16-20题

3Sum Closest Given an array S of n integers, find three integers in S such that the s...
  • u011932355
  • u011932355
  • 2015年08月11日 10:13
  • 491

Valid Parentheses (栈的符号匹配)

很简单的利用栈进行括号匹配的题目。 当是左边的符号的时候,压进栈中。发现是右边的符号的时候,先判断其是否为空,然后与栈顶元素比较,不等直接return false 注意一点就是 最后只有栈中为空的...
  • NK_test
  • NK_test
  • 2015年07月12日 22:28
  • 981

Leetcode刷题记——20. Valid Parentheses (有效的括号即括号匹配)

一、题目叙述: Given a string containing just the characters '(', ')', '{', '}', '[' and ']'...
  • sunshine0_0
  • sunshine0_0
  • 2016年10月25日 13:17
  • 166

【LeetCode-面试算法经典-Java实现】【125-Valid Palindrome(回文字验证)】

【125-Valid Palindrome(回文字验证)】【LeetCode-面试算法经典-Java实现】【所有题目目录索引】原题  Given a string, determine if it i...
  • DERRANTCM
  • DERRANTCM
  • 2015年08月14日 06:18
  • 2280
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:[leetcode 20] Valid Parentheses
举报原因:
原因补充:

(最多只允许输入30个字)