s0020
All checks were successful
continuous-integration/drone/push Build is passing

This commit is contained in:
Sainnhe Park 2022-11-04 17:22:15 +08:00
parent 91b8ac05f7
commit 955655bb0f
3 changed files with 71 additions and 0 deletions

View File

@ -0,0 +1,14 @@
#ifndef S0020_VALID_PARENTHESES
#define S0020_VALID_PARENTHESES
#include <stack>
#include <string>
using namespace std;
class Solution {
public:
bool isValid(string s);
};
#endif

View File

@ -0,0 +1,26 @@
#include "s0020_valid_parentheses.hpp"
bool match(string s1, string s2) {
return s1 == "(" && s2 == ")" ||
s1 == "[" && s2 == "]" ||
s1 == "{" && s2 == "}";
}
// 直接用栈
bool Solution::isValid(string s) {
stack<string> stack;
int len = s.length();
for (int i{0}; i < len; i++) {
if (stack.empty()) {
stack.push(s.substr(i, 1));
} else {
if (match(stack.top(), s.substr(i, 1))) {
stack.pop();
} else {
stack.push(s.substr(i, 1));
}
}
}
return stack.empty();
}

View File

@ -0,0 +1,31 @@
#include "s0020_valid_parentheses.hpp"
#include <gtest/gtest.h>
TEST(Problem20, Case1) {
string i{"()"};
bool o{true};
Solution solution;
EXPECT_EQ(solution.isValid(i), o);
}
TEST(Problem20, Case2) {
string i{"()[]{}"};
bool o{true};
Solution solution;
EXPECT_EQ(solution.isValid(i), o);
}
TEST(Problem20, Case3) {
string i{"(]"};
bool o{false};
Solution solution;
EXPECT_EQ(solution.isValid(i), o);
}
TEST(Problem20, Case4) {
string i{"(){}}{"};
bool o{false};
Solution solution;
EXPECT_EQ(solution.isValid(i), o);
}