# Balancing Parenthesis

A program to check if the parenthesis are balanced in an equation.

### Procedure :

• Iterate through the input equation character by character.

• If an opening bracket is found, push it to stack.

• If a closing bracket is found, pop from the stack and check if the popped bracket and the closing bracket match (are of the same type).

• If stack is empty and a closing bracket is found, the parenthesis are not balanced.

• If the stack is empty after iterating through all the characters, the parenthesis are balanced. Else, they are not balanced.

### C Function :

``````// Function to check if pair is matching

int isMatchingPair(char a, char b) {

if ( (a == '(' && b == ')') || (a == '[' && b == ']') || (a == '{' && b == '}') ) {
return 1;
}
return 0;

}

int isBalanced(char *equation) {

// Creating a stack of max size equal to string length
int len = strlen(equation);
char stack[len];
int top = -1;

// Iterating through each character
for (int i = 0; equation[i] != '\0'; i++) {
// Push to stack if opening bracket
if (equation[i] == '(' || equation[i] == '[' || equation[i] == '{') {
top++;
stack[top] = equation[i];
}
// Pop from stack if closing bracket
else if (equation[i] == ')' || equation[i] == ']' || equation[i] == '}') {
char poppedBracket = stack[top];
top--;
// If pairs are not matching, return false.
if (!isMatchingPair(poppedBracket, equation[i])) {
return 0;
}
}
}

// If stack is empty, parenthesis are balanced.
if (top == -1) {
return 1;
}
return 0;

}``````

Contributed by Nitin Ranganath

Last updated