Advertisement
cska1312

07. Balanced Parenthesis(BRACKETS)

May 10th, 2023
792
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.00 KB | None | 0 0
  1. #include <iostream>
  2. #include <climits>
  3. #include <stack>
  4. #include <string>
  5. #include <vector>
  6. #include <sstream>
  7. using namespace std;
  8.  
  9. bool correctExpression(const string & expression)
  10. {
  11.   stack<char> brackets;
  12.  
  13.   for(int idx = 0; idx < expression.size(); idx++)
  14.     {
  15.       char curChar = expression[idx];
  16.  
  17.       char opening = 0;
  18.  
  19.       switch(curChar)
  20.         {
  21.           case '(':
  22.           case '[':
  23.           case '{':
  24.           brackets.push(curChar);
  25.           break;
  26.  
  27.           case ')':opening = '('; break;
  28.           case ']':opening = '['; break;
  29.           case '}':opening = '{'; break;
  30.         }
  31.       if(opening)
  32.       {
  33.         if(!brackets.size())
  34.           return false; //incorrect expression
  35.         if(brackets.top() != opening)
  36.           return false;
  37.         brackets.pop();
  38.       }
  39.     }
  40.   return brackets.size() == 0;
  41. }
  42.  
  43. int main()
  44. {
  45.   string buffer;
  46.   cin >> buffer;
  47.  
  48.   cout << ( correctExpression(buffer) ? "YES" : "NO") << endl;
  49.   return 0;
  50. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement