From a9ff3c5bc03354fb6ae68ad205199af85fb62d3a Mon Sep 17 00:00:00 2001 From: Eatswap Date: Mon, 10 Apr 2023 11:22:27 +0800 Subject: [PATCH] add: 230410 --- cpp/2304/230410.cpp | 47 +++++++++++++++++++++++++++++++++++++++++ cpp/2304/CMakeLists.txt | 2 +- 2 files changed, 48 insertions(+), 1 deletion(-) create mode 100644 cpp/2304/230410.cpp diff --git a/cpp/2304/230410.cpp b/cpp/2304/230410.cpp new file mode 100644 index 0000000..f0bb2e4 --- /dev/null +++ b/cpp/2304/230410.cpp @@ -0,0 +1,47 @@ +#include +#include + +/** + * 20. Valid Parentheses + * + * Given a string s containing just the characters '(', ')', '{', '}', '[' and ']', determine if the input string is valid. + * + * An input string is valid if: + * + * Open brackets must be closed by the same type of brackets. + * Open brackets must be closed in the correct order. + * Every close bracket has a corresponding open bracket of the same type. + */ + +class Solution { +public: + static bool isValid(const std::string&); +}; + +bool Solution::isValid(const std::string& s) { + std::stack sc; + for (char ch : s) { + switch (ch) { + case '[': + case '(': + case '{': + sc.push(ch); + break; + case ']': + case ')': + case '}': + if (sc.empty() || sc.top() != (ch ^ (ch < 64 ? 1 : 6))) + return false; + sc.pop(); + break; + default: + return false; + } + } + return sc.empty(); +} + +int main() { + Solution::isValid("()[]{}"); + return 0; +} \ No newline at end of file diff --git a/cpp/2304/CMakeLists.txt b/cpp/2304/CMakeLists.txt index 9642c39..6b9dd89 100644 --- a/cpp/2304/CMakeLists.txt +++ b/cpp/2304/CMakeLists.txt @@ -4,4 +4,4 @@ PROJECT(2304) SET(CMAKE_CXX_STANDARD 23) SET(CMAKE_EXPORT_COMPILE_COMMANDS true) -ADD_EXECUTABLE(2304 230410-CN.cpp) +ADD_EXECUTABLE(2304 230410.cpp)