import java.util.Stack;
import java.util.EmptyStackException;
import java.util.Optional;
class ParenthesisMatching {
static boolean isBalanced(Optional equationOptional) {
if(!equationOptional.isPresent()) {
return false;
}
char[] chars = equationOptional.get().toCharArray();
Stack stack = new Stack<>();
for(char ch : chars) {
try {
if(ch == '(') {
stack.push('(');
} else if(ch == ')') {
stack.pop();
}
} catch(EmptyStackException e) {
return false;
}
}
return stack.empty() ? true : false;
}
public static void main(String[] args) {
String str = "(a+b)*(c-d)";
Optional equationOptional = Optional.of(str);
System.out.println("Is " + str + " balanced? " + isBalanced(equationOptional));
str = "((a+b)*(c-d)";
equationOptional = Optional.of(str);
System.out.println("Is " + str + " balanced? " + isBalanced(equationOptional));
str = "(a+b)*(c-d))";
equationOptional = Optional.of(str);
System.out.println("Is " + str + " balanced? " + isBalanced(equationOptional));
}
}
Outpur
Is (a+b)*(c-d) balanced? true
Is ((a+b)*(c-d) balanced? false
Is (a+b)*(c-d)) balanced? false
Comments
Post a Comment