2021-07-09 13:27:24 +00:00
|
|
|
/*
|
|
|
|
Program to check whether the Parenthesis are balanced or not
|
|
|
|
*/
|
2021-02-22 01:33:58 +00:00
|
|
|
#include<bits/stdc++.h>
|
2021-07-09 13:27:24 +00:00
|
|
|
|
2021-02-22 01:33:58 +00:00
|
|
|
using namespace std;
|
|
|
|
bool isBalanced(string s) {
|
2021-07-09 13:27:24 +00:00
|
|
|
stack < char > st;
|
|
|
|
char data;
|
|
|
|
int i;
|
|
|
|
/*
|
|
|
|
Logic
|
|
|
|
1. Create a stack of char data type,i of int type and data of char type
|
|
|
|
2. Run a loop till i is less than size
|
|
|
|
3. Assign x[i]th index value in data
|
|
|
|
4. If stack is not empty as well st.top()+2 ==(int) data (we will assume that st.top '[' or '}' so by adding two in it should
|
|
|
|
be ']' pr '}' ) or st.top+1 (we will assume that st.top be '(' so +1 would be ')')
|
|
|
|
5. If the 4 step didn't run then push data in it
|
|
|
|
6. Run the step 4 and 5 till the i is less than x size
|
|
|
|
7. If stack is empty that means the expression is balanced so return 1
|
|
|
|
8. If the 7 step didn't run then return 0 means the expression is not balanced
|
|
|
|
*/
|
|
|
|
for (i = 0; i < s.size(); i++) {
|
|
|
|
data = s[i];
|
|
|
|
if ((st.empty() != 1) && ((int)(st.top() + 2) == (int) data || (int)(st.top() + 1) == (int) data))
|
|
|
|
st.pop();
|
|
|
|
else
|
|
|
|
st.push(data);
|
|
|
|
}
|
|
|
|
return (st.empty());
|
2021-02-22 01:33:58 +00:00
|
|
|
}
|
|
|
|
int main() {
|
2021-07-09 13:27:24 +00:00
|
|
|
int t;
|
|
|
|
string a;
|
|
|
|
cout << "Enter the number of test cases ";
|
|
|
|
cin >> t;
|
|
|
|
// run loop till t is not equal to 0
|
|
|
|
while (t--) {
|
|
|
|
cout << "Enter the expression ";
|
|
|
|
cin >> a;
|
|
|
|
if (isBalanced(a))
|
|
|
|
cout << "Expression " << a << " is balanced" << endl;
|
|
|
|
else
|
|
|
|
cout << "Expression " << a << " is not balanced" << endl;
|
|
|
|
}
|
2021-04-10 09:10:32 +00:00
|
|
|
}
|
2021-07-09 13:27:24 +00:00
|
|
|
/*
|
|
|
|
Input: Enter the number of test cases: 1
|
|
|
|
Enter the expression: ([{}])
|
|
|
|
Output:
|
|
|
|
Expression ([{}]) is balanced
|
|
|
|
|
|
|
|
Time Complexity: O(| x |);
|
|
|
|
Space Complexity: O(| x |);
|
|
|
|
*/
|