From f70f5a713a42a251c7f8351383f9707cf81ffa73 Mon Sep 17 00:00:00 2001 From: Tursunov Temirlan <36619221+su5kk@users.noreply.github.com> Date: Wed, 1 Feb 2023 16:39:24 +0300 Subject: [PATCH] Update 0020-valid-parentheses.cpp use map of brackets --- cpp/0020-valid-parentheses.cpp | 27 +++++++++++++-------------- 1 file changed, 13 insertions(+), 14 deletions(-) diff --git a/cpp/0020-valid-parentheses.cpp b/cpp/0020-valid-parentheses.cpp index 671df220a..58c5fbf56 100644 --- a/cpp/0020-valid-parentheses.cpp +++ b/cpp/0020-valid-parentheses.cpp @@ -12,30 +12,29 @@ class Solution { public: bool isValid(string s) { stack open; + unordered_map parens = { + {')', '('}, + {']', '['}, + {'}', '{'}, + }; - for (int i = 0; i < s.size(); i++) { - if (s[i] == ')' || s[i] == '}' || s[i] == ']') { + for (const auto& c : s) { + if (parens.find(c) != parens.end()) { + // if input starts with a closing bracket. if (open.empty()) { return false; } - if (s[i] == ')' && open.top() != '(') { - return false; - } - if (s[i] == '}' && open.top() != '{') { - return false; - } - if (s[i] == ']' && open.top() != '[') { + + if (open.top() != parens[c]) { return false; } + open.pop(); } else { - open.push(s[i]); + open.push(c); } } - if (!open.empty()) { - return false; - } - return true; + return open.empty(); } };