In: Computer Science
Thus, an expression can contain a sequence of delimiters such as
{ [ ( ) ( ) ] ( ) }
but not
[ ( ] )
For convenience, we will say that a balanced expression contains delimiters that are paired correctly, or are balanced.
import java.util.Stack;
public class BalancedParensChecker {
public static void main(String[] args) {
System.out.println(checkParens("(())"));
System.out.println(checkParens("[]"));
System.out.println(checkParens("(())"));
System.out.println(checkParens("{[]}"));
System.out.println(checkParens("{ [ ( ) ( ) ] ( ) }"));
System.out.println(checkParens(" [ ( ] )"));
}
private static boolean isBalanced(char ch, Stack<Character> mystack) {
boolean flag = false;
switch (ch) {
case ']':
if (!mystack.isEmpty() && (char) mystack.peek() == '[') {
mystack.pop();
flag = true;
} else {
System.out.println("Unbalanced right paranthesis were found");
System.exit(0);
}
break;
case '}':
if (!mystack.isEmpty() && (char) mystack.peek() == '{') {
mystack.pop();
flag = true;
} else {
System.out.println("Unbalanced right paranthesis were found");
System.exit(0);
}
break;
case ')':
if (!mystack.isEmpty() && (char) mystack.peek() == '(') {
mystack.pop();
flag = true;
} else {
System.out.println("Unbalanced right paranthesis were found");
System.exit(0);
}
break;
default:
flag = false;
}
return flag;
}
public static boolean checkParens(String s) {
if (s == null) {
return false;
}
boolean isBalancedParenthesis = false;
char[] arr = s.toCharArray();
Stack<Character> st = new Stack<Character>();
for (char ch : arr) {
if ((ch >= '0' && ch <= '9') || ch == '+' || ch == '-' || ch == '*' || ch == '/') {
continue;
}
if (ch == '[' || ch == '{' || ch == '(') {
st.push(ch);
} else if (ch == ']' || ch == '}' || ch == ')') {
isBalancedParenthesis = isBalanced(ch,st);
}
}
if (!st.isEmpty()) {
System.out.println("Unbalanced left paranthesis were found");
System.exit(0);
}
return isBalancedParenthesis;
}
}
=======================================================
SEE OUTPUT
Thanks, PLEASE COMMENT if there is any concern.