[LeetCode] Valid Parentheses

简介: This is a classic problem of the application of stacks. The idea is, each time we meet a (, { or[, we push it to a stack.

This is a classic problem of the application of stacks. The idea is, each time we meet a ({ or[, we push it to a stack. If we meet a )} or ], we check if the stack is not empty and the top matches it. If not, return false; otherwise, we pop the stack. Finally, if the stack is empty, returntrue; otherwise, return false.

The code is as follows, very straight-forward.

 1 class Solution {
 2 public:
 3     bool isValid(string s) {
 4         stack<char> paren;
 5         for (int i = 0; i < s.length(); i++) {
 6             if (s[i] == '(' || s[i] == '{' || s[i] == '[')
 7                 paren.push(s[i]);
 8             else if (s[i] == ')' || s[i] == '}' || s[i] == ']') {
 9                 if (paren.empty()) return false;
10                 if (!match(paren.top(), s[i])) return false;
11                 paren.pop();
12             }
13         }
14         return paren.empty();
15     }
16 private:
17     bool match(char s, char t) {
18         if (t == ')') return s == '(';
19         if (t == '}') return s == '{';
20         if (t == ']') return s == '[';
21     }
22 };

 

目录
相关文章
|
5月前
|
存储 SQL 算法
LeetCode 题目 65:有效数字(Valid Number)【python】
LeetCode 题目 65:有效数字(Valid Number)【python】
LeetCode Contest 178-1368. 使网格图至少有一条有效路径的最小代价 Minimum Cost to Make at Least One Valid Path in a Grid
LeetCode Contest 178-1368. 使网格图至少有一条有效路径的最小代价 Minimum Cost to Make at Least One Valid Path in a Grid
LeetCode 367. Valid Perfect Square
给定一个正整数 num,编写一个函数,如果 num 是一个完全平方数,则返回 True,否则返回 False。
95 0
LeetCode 367. Valid Perfect Square
LeetCode 301. Remove Invalid Parentheses
删除最小数量的无效括号,使得输入的字符串有效,返回所有可能的结果。 说明: 输入可能包含了除 ( 和 ) 以外的字符。
71 0
LeetCode 301. Remove Invalid Parentheses
LeetCode 242. Valid Anagram
给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的一个字母异位词。
84 0
LeetCode 242. Valid Anagram
LeetCode 241. Different Ways to Add Parentheses
给定一个含有数字和运算符的字符串,为表达式添加括号,改变其运算优先级以求出不同的结果。你需要给出所有可能的组合的结果。有效的运算符号包含 +, - 以及 * 。
81 0
LeetCode 241. Different Ways to Add Parentheses
|
canal
LeetCode 125. Valid Palindrome
给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写。
92 0
LeetCode 125. Valid Palindrome
|
算法
LeetCode 65. Valid Number
验证给定字符串是否可以解释为十进制数。
95 0
LeetCode 65. Valid Number
Leetcode-Easy 20. Valid Parentheses
Leetcode-Easy 20. Valid Parentheses
108 0
Leetcode-Easy 20. Valid Parentheses
LeetCode 20:有效的括号 Valid Parentheses
给定一个只包括 '(',')','{','}','[',']' 的字符串,判断字符串是否有效。 Given a string containing just the characters '(', ')', '{', '}', '[' and ']', determine if the input string is valid. 有效字符串需满足: 左括号必须用相同类型的右括号闭合。
762 0