diff --git a/678-valid-parenthesis-string/driver.cpp b/678-valid-parenthesis-string/driver.cpp new file mode 100644 index 0000000..0a91eda --- /dev/null +++ b/678-valid-parenthesis-string/driver.cpp @@ -0,0 +1,10 @@ +#include "soln.hpp" + +int main() +{ + string s = "((**)((()))"; + bool answer = true; + Solution soln; + cout << "Validated parenthesis string correctly? " << soln.test(s, answer) << endl; + return 0; +} \ No newline at end of file diff --git a/678-valid-parenthesis-string/soln.cpp b/678-valid-parenthesis-string/soln.cpp new file mode 100644 index 0000000..f761129 --- /dev/null +++ b/678-valid-parenthesis-string/soln.cpp @@ -0,0 +1,33 @@ +#include "soln.hpp" + +bool Solution::checkValidString(string s) +{ + int min_open = 0, max_open = 0; + for (int i = 0; i < s.length(); i++) + { + if (s[i] == '(') + { + min_open++; + max_open++; + } + else if (s[i] == ')') + { + min_open--; + max_open--; + } + else + { + min_open--; + max_open++; + } + if (max_open < 0) + break; + min_open = max(min_open, 0); + } + return min_open == 0; +} + +bool Solution::test(string s, bool answer) +{ + return checkValidString(s) == answer; +} \ No newline at end of file diff --git a/678-valid-parenthesis-string/soln.hpp b/678-valid-parenthesis-string/soln.hpp new file mode 100644 index 0000000..ba07184 --- /dev/null +++ b/678-valid-parenthesis-string/soln.hpp @@ -0,0 +1,8 @@ +#include +using namespace std; +class Solution +{ +public: + bool checkValidString(string s); + bool test(string s, bool answer); +}; \ No newline at end of file