diff --git a/20/1.cpp b/20/1.cpp new file mode 100644 index 0000000..5a922a9 --- /dev/null +++ b/20/1.cpp @@ -0,0 +1,20 @@ +class Solution { +public: + bool isValid(string s) { + stack stack; + + for(char c : s){ + // stack topとのチェック + if(!stack.empty() && isPair(stack.top(), c)){ + stack.pop(); + }else{ + stack.push(c); + } + } + return stack.empty(); + } + + bool isPair(char l, char r){ + return (l == '(' && r == ')' || l == '{' && r == '}' || l == '[' && r == ']'); + } +}; diff --git a/20/2.cpp b/20/2.cpp new file mode 100644 index 0000000..59cf18f --- /dev/null +++ b/20/2.cpp @@ -0,0 +1,19 @@ +class Solution { +public: + bool isValid(string s) { + stack stack; + + for(char c : s){ + if(!stack.empty() && isPair(stack.top(), c)){ + stack.pop(); + }else{ + stack.push(c); + } + } + return stack.empty(); + } + + bool isPair(char l, char r){ + return (l == '(' && r == ')' || l == '{' && r == '}' || l == '[' && r == ']'); + } +}; diff --git a/20/3.cpp b/20/3.cpp new file mode 100644 index 0000000..332501b --- /dev/null +++ b/20/3.cpp @@ -0,0 +1,20 @@ +class Solution { +public: + bool isValid(string s) { + stack stack; + + for(char c: s){ + if(!stack.empty() && isPair(stack.top(), c)){ + stack.pop(); + }else{ + stack.push(c); + } + } + + return stack.empty(); + } + + bool isPair(char l, char r){ + return (l == '{' && r == '}' || l == '(' && r == ')' || l == '[' && r == ']'); + } +}; diff --git a/20/4.cpp b/20/4.cpp new file mode 100644 index 0000000..8235c7d --- /dev/null +++ b/20/4.cpp @@ -0,0 +1,29 @@ +class Solution { +public: + bool isValid(string s) { + stack stack; + + if(s[0] == ')' || s[0] == '}' || s[0] == ']'){ + return false; + } + + for(char c : s){ + if(!stack.empty() && isInvalidPair(stack.top(), c)){return false;} + + if(c != '(' && c != '{' && c != '[' && !stack.empty() && isPair(stack.top(), c)){ + stack.pop(); + }else{ + stack.push(c); + } + } + return stack.empty(); + } + + bool isPair(char l, char r){ + return (l == '(' && r == ')' || l == '{' && r == '}' || l == '[' && r == ']'); + } + + bool isInvalidPair(char l, char r){ + return (l == '(' && (r == '}' || r == ']')) || (l == '{' && (r == ')' || r == ']')) || (l == '[' && (r == '}' || r == ')')); + } +};