• Source
    1. #include <iostream>
    2. #include <bits/stdc++.h>
    3. using namespace std;
    4.  
    5. bool isbracketbalanced( string expr )
    6. {
    7. stack<char> s;
    8. char x;
    9.  
    10. for( int i = 0; i < expr.length() ; i++ )
    11. {
    12. if( expr[i] == '(' || expr[i] == '[' || expr[i] == '{' )
    13. {
    14. s.push(expr[i]);
    15. continue;
    16. }
    17.  
    18. if(s.empty())
    19. {
    20. return false;
    21. }
    22.  
    23. switch( expr[i] )
    24. {
    25. case ')':
    26.  
    27. x = s.top();
    28. if( x == '(' )
    29. s.pop();
    30. else
    31. return false;
    32. break;
    33.  
    34. case '}':
    35.  
    36. x = s.top();
    37. if( x == '{')
    38. s.pop();
    39. else
    40. return false;
    41. break;
    42.  
    43. case ']':
    44.  
    45. x = s.top();
    46. if( x == '[' )
    47. s.pop();
    48. else
    49. return false;
    50. break;
    51. }
    52.  
    53. }
    54.  
    55. if(s.empty())
    56. {
    57. return true;
    58. }
    59. else
    60. {
    61. return false;
    62. }
    63. }
    64.  
    65. int main() {
    66. // your code goes here
    67. string test1 = "({[]})";
    68. string test2 = "({[]}])";
    69. string test3 = "({[]}))";
    70.  
    71. if(isbracketbalanced(test3))
    72. cout << "bracket balanced";
    73. else
    74. cout << "bracket not balanced";
    75. return 0;
    76. }