LeetCode OJ-20.Valid Parentheses

来源:互联网 发布:火爆网络的ann是谁 编辑:程序博客网 时间:2024/05/23 23:20

LeetCode OJ-20.Valid Parentheses

题目描述

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.

Subscribe to see which companies asked this question.

题目理解

​ 一个括号匹配的问题,字符串中仅含需要匹配的几种括号,用栈匹配就好了,在遍历字符串过程中,出现不匹配则将返回值res赋值为false,并退出循环,最后的判断条件应是,栈为空,因为匹配时,会将栈中左半边的括号做pop操作。具体代码在下方,包含一些处理的细节。

Code

class Solution {public:    bool isValid(string s) {        bool res = true;        std::stack<char> syms;        int len = (int) s.length();        int i;        res = (len % 2) == 0 ? true : false;  // 若字符串中括号匹配,则应满足长度为偶数         for (i = 0; i < len && res; ++i) {            switch (s[i]) {                case '(':                    syms.push(s[i]);                    break;                case '[':                    syms.push(s[i]);                    break;                case '{':                    syms.push(s[i]);                    break;                case ')':                    if (syms.empty() || syms.top() != '(') {  // 需要先做判断,符号栈是否为空,对空栈做top是错误行为                         res = false;                    }                    else {                        syms.pop();                    }                    break;                case ']':                    if (syms.empty() || syms.top() != '[') {                        res = false;                    }                    else {                        syms.pop();                    }                    break;                case '}':                    if (syms.empty() || syms.top() != '{') {                        res = false;                    }                    else {                        syms.pop();                    }                    break;                default:                    break;            }        }        if (syms.empty() != true) {  // 若括号能匹配,则最后符号栈应该为空             res = false;         }         return res;    }};
0 0
原创粉丝点击