The interview test validates that the parentheses in an input String a marching.
If the parentheses match, the method returns true, otherwise it returns false.
This method counts the number matching parentheses. If at the end of the input the count is not 0, or at any moment the count is less than 0, then the parentheses are not matching an the method returns false.
public class InterviewValidateParentheses { public boolean isValid(String input) { if (input == null) return true; int opened = 0; for (int i = 0; i < input.length(); i++) { char c = input.charAt(i); if (c == '(') { opened++; } else if (c == ')') { opened--; if (opened < 0) { return false; } } } if (opened == 0) return true; return false; } public static void main(String[] argv) throws Exception { InterviewValidateParentheses t = new InterviewValidateParentheses(); System.out.println("Valid=" + t.isValid("(abc)")); System.out.println("Valid=" + t.isValid("((abc)")); System.out.println("Valid=" + t.isValid("(abc))")); System.out.println("Valid=" + t.isValid("(()(abc)")); } }
Valid=true Valid=false Valid=false Valid=false
The method is validated using 4 examples: too many outside opening parentheses, too many outside closing parenthese and the same with inside parentheses.