Skip to content

Commit f4201ed

Browse files
committed
Update 20 Valid Parentheses 4.cpp
1 parent 3046271 commit f4201ed

File tree

1 file changed

+16
-6
lines changed

1 file changed

+16
-6
lines changed

20/4.cpp

Lines changed: 16 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,16 @@
11
class Solution {
22
public:
3+
std::map <char, char> parentheses = {
4+
{ '{', '}' },
5+
{ '(', ')' },
6+
{ '[', ']' },
7+
};
8+
39
bool isValid(string s) {
410
stack<char> stack;
511

6-
if(s[0] == ')' || s[0] == '}' || s[0] == ']'){
7-
return false;
8-
}
9-
1012
for(char c : s){
13+
if(stack.empty() && isCloseParenth(c)){return false;}
1114
if(!stack.empty() && isInvalidPair(stack.top(), c)){return false;}
1215

1316
if(c != '(' && c != '{' && c != '[' && !stack.empty() && isPair(stack.top(), c)){
@@ -20,10 +23,17 @@ class Solution {
2023
}
2124

2225
bool isPair(char l, char r){
23-
return (l == '(' && r == ')' || l == '{' && r == '}' || l == '[' && r == ']');
26+
return parentheses[l] == r;
27+
}
28+
29+
bool isCloseParenth(char c){
30+
for(auto p: parentheses){
31+
if(p.second == c){return true;}
32+
}
33+
return false;
2434
}
2535

2636
bool isInvalidPair(char l, char r){
27-
return (l == '(' && (r == '}' || r == ']')) || (l == '{' && (r == ')' || r == ']')) || (l == '[' && (r == '}' || r == ')'));
37+
return isCloseParenth(r) && parentheses[l] != r;
2838
}
2939
};

0 commit comments

Comments
 (0)