leetcode题解20—Valid Parentheses

标签: Leetcode stack
4人阅读 评论(0) 收藏 举报
分类:

题目:

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

An input string is valid if:

  1. Open brackets must be closed by the same type of brackets.
  2. Open brackets must be closed in the correct order.

Note that an empty string is also considered valid.

Example 1:

Input: "()"
Output: true

Example 2:

Input: "()[]{}"
Output: true

Example 3:

Input: "(]"
Output: false

Example 4:

Input: "([)]"
Output: false

Example 5:

Input: "{[]}"
Output: true


解题思路: 用一个堆栈保存左括号,遇到一个右括号就对比栈顶的左括号是否匹配,若不匹配则返回false。如果有多余的左括号或右括号也要返回false。


代码:

class Solution {
public:
    bool isValid(string s) {
        stack<char> Stack;
        string left_string ="([{";
        string right_string =")]}";
        for(int i = 0; i < s.size(); i++){
            std::size_t found_left = left_string.find(s[i]);   // 在左边找到目标左括号的下标
            std::size_t found_right = right_string.find(s[i]); // 在右边找到目标右括号的下标
            if(found_left != std::string::npos){
                Stack.push(s[i]);
            }
            if(found_right != std::string::npos){
                // 如果stack为空(即单一的右括号)或者 找不到匹配的括号对, 返回 false
                if(Stack.empty() || found_right != left_string.find(Stack.top())) return false;
                else Stack.pop();
            } 
        }
        // 如果还剩下单一左括号,返回false
        if(! Stack.empty())
            return false;   
        return true;
        
    }
};

查看评论

LeetCode 20 Valid Parentheses (C,C++,Java,Python)

Problem: Given a string containing just the characters '(', ')', '{', '}', '[' and ']', deter...
  • runningtortoises
  • runningtortoises
  • 2015-05-10 16:41:00
  • 2981

LeetCode(20) Valid Parentheses

题目如下 Given a string containing just the characters '(', ')', '{', '}', '[' and ']', determine if the...
  • feliciafay
  • feliciafay
  • 2013-12-19 06:04:40
  • 3074

【LeetCode】Longest Valid Parentheses 解题报告

【题目】 Given a string containing just the characters '(' and ')', find the length of the longes...
  • ljiabin
  • ljiabin
  • 2015-04-06 19:05:15
  • 1852

LeetCode 20 Valid Parentheses 括号匹配问题

题目: Given a string containing just the characters '(', ')', '{', '}', '[' and ']', determine ...
  • vvaaiinn
  • vvaaiinn
  • 2015-05-05 10:12:34
  • 2363

LeetCode 20 : Valid Parentheses (Java)

解题思路:这是一道典型的可以用栈来解决的问题。做一个空栈。一个个读入字符直到字符串结尾。如果字符是一个开放符号,则将其推入栈中。如果字符是一个封闭符号,则当栈空时报错。否则,将栈元素弹出。如果弹出的符...
  • changetocs
  • changetocs
  • 2015-12-02 10:53:48
  • 517

LeetCode 20 — Valid Parentheses(C++ Java Python)

题目:http://oj.leetcode.com/problems/valid-parentheses/ Given a string containing just the characters ...
  • dragon_dream
  • dragon_dream
  • 2014-03-21 09:37:46
  • 3014

20. Valid Parentheses [easy] (Python)

题目链接https://leetcode.com/problems/valid-parentheses/题目原文 Given a string containing just the charac...
  • coder_orz
  • coder_orz
  • 2016-06-17 10:18:55
  • 2071

leetcode-java-20. Valid Parentheses

思路: 本题用栈实现 读到一个字符串时判断,如果栈顶和当前这个字符满足左右括号匹配,则弹出,否则压栈。 若最后栈顶为空,则说明匹配成功。public class Solution { ...
  • github_34514750
  • github_34514750
  • 2016-06-10 13:55:41
  • 353

LeetCode-20 Valid Parentheses(判断括号是否规范)

LeetCode-20 Valid Parentheses Given a string containing just the characters '(', ')', '{', '}', '['...
  • u011035622
  • u011035622
  • 2015-04-25 11:55:04
  • 639

leetCode 20.Valid Parentheses (有效的括号) 解题思路和方法

Valid Parentheses  Given a string containing just the characters '(', ')', '{', '}', '[' and ']', d...
  • xygy8860
  • xygy8860
  • 2015-07-06 17:21:26
  • 509
    个人资料
    持之以恒
    等级:
    访问量: 1370
    积分: 201
    排名: 36万+
    文章存档
    最新评论