From a2ef39abaf763d81fc7cee30a938949d13882897 Mon Sep 17 00:00:00 2001 From: crupest Date: Mon, 17 Aug 2020 20:49:29 +0800 Subject: import(solutions): Add problem 20 . --- works/solutions/cpp/20.cpp | 55 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 55 insertions(+) create mode 100644 works/solutions/cpp/20.cpp (limited to 'works/solutions/cpp/20.cpp') diff --git a/works/solutions/cpp/20.cpp b/works/solutions/cpp/20.cpp new file mode 100644 index 0000000..e994e96 --- /dev/null +++ b/works/solutions/cpp/20.cpp @@ -0,0 +1,55 @@ +#include + +using std::string; + +#include + +class Solution +{ +public: + inline static char get_companion(char c) + { + switch (c) + { + case ')': + return '('; + case ']': + return '['; + default: + return '{'; + } + } + + bool isValid(string s) + { + std::stack stack; + + for (const auto c : s) + { + switch (c) + { + case '(': + case '[': + case '{': + { + stack.push(c); + break; + } + case ')': + case ']': + default: + { + if (stack.empty()) + return false; + const auto top = stack.top(); + const char companion = get_companion(c); + if (top != companion) + return false; + stack.pop(); + } + } + } + + return stack.empty(); + } +}; -- cgit v1.2.3