From 185ef9fcb0e59f13e9ee0ccb261693cdaddebab0 Mon Sep 17 00:00:00 2001 From: crupest Date: Tue, 23 Feb 2021 21:07:19 +0800 Subject: import(solutions): Move leetcode solutions to subdir. --- works/solutions/leetcode/cpp/20.cpp | 55 +++++++++++++++++++++++++++++++++++++ 1 file changed, 55 insertions(+) create mode 100644 works/solutions/leetcode/cpp/20.cpp (limited to 'works/solutions/leetcode/cpp/20.cpp') diff --git a/works/solutions/leetcode/cpp/20.cpp b/works/solutions/leetcode/cpp/20.cpp new file mode 100644 index 0000000..e994e96 --- /dev/null +++ b/works/solutions/leetcode/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