Problem Statement
Given a string of parentheses, you must turn it into a well formed string by inserting as few parentheses as possible, at any position (you cannot delete or change any of the existing parentheses).
A well formed string of parentheses is defined by the following rules:
- The empty string is well formed.
- If s is a well formed string, (s) is a well formed string.
- If s and t are well formed strings, their concatenation st is a well formed string.
Given a
Definition
- Class:
- MissingParentheses
- Method:
- countCorrections
- Parameters:
- String
- Returns:
- int
- Method signature:
- int countCorrections(String par)
- (be sure your method is public)
Constraints
- par will contain between 1 and 50 characters, inclusive.
- Each character of par will be an opening or closing parenthesis, i.e., '(' or ')'.
Examples
"(()(()"
Returns: 2
The string below is a possible well formed string you can get to by inserting the two closing parentheses marked. (())(()) ^ ^
"()()(()"
Returns: 1
You can fix the string by inserting a single closing parenthesis at the end.
"(())(()())"
Returns: 0
The input string is well formed, so no insertion is needed.
"())(())((()))))()((())))()())())())()()()"
Returns: 7
"()"
Returns: 0
")(())((((()()())))(()(())((()(()(((())(()(((((()))"
Returns: 12
"())()))())()()()))())()()((()()())))(()()()()(()))"
Returns: 8
"())())(()(())()())())(()))))()()((((()()(())(()((("
Returns: 14
")(()(()()()()())()(()(((())))()(((())))()))))())(("
Returns: 6
"()()()()())((()))()()()(())))))))(())))()((()()()("
Returns: 12
"(((()(((((()((((((((()((()(((((()(()(((()(((()()(("
Returns: 32
"((()((()(()()()()(((((((((((()()(((()((((((((()()("
Returns: 28
")))((()()(()))())((())(()))))))())())()())))(((()("
Returns: 16
"()()()(())()))()))()))())))))(((())(())(()))))))))"
Returns: 16
")(())()))()((())))))))()(())()))())())))()))))((()"
Returns: 20
"())((()))))()))))()()())))()(()()))()))))()))))())"
Returns: 20
"))))(((()(()(())())))))()))))))()))())(())(())))(("
Returns: 18
"()(((((((((((((((()(((((("
Returns: 21
"((((()((((((()((((()(((("
Returns: 18
")))))))))))()"
Returns: 11
"()((((())"
Returns: 3
")))("
Returns: 4
"(((((((((((((((((()))))))))))))))))"
Returns: 1
")))))))))))))))))(((((((((((((((((("
Returns: 35
"(((((((((((((((()))))))))))))))))))))"
Returns: 5
")))))))))))))))))))(((((((((((((((((("
Returns: 37
"(((((((((((((()))))))))))))"
Returns: 1
")))))))))))(((((((((((((((("
Returns: 27
"((()(())()())((()())()()()()()()()()()()(()()())))"
Returns: 0
"(((((((((()()((())(()))()())()())()())))))(()())))"
Returns: 0
"(((((()))))()()(((((((((((((()))))(()())))))))))))"
Returns: 0
"(()))()()()()()(()(()()((())())()())()(())()()()()"
Returns: 2
"((((((())))))((((())()))((()()())((())(())()))))))"
Returns: 2
"(((((())(((()))))()((()))()()))))((()))(((((()))))"
Returns: 2
"((()((())())))()(((()()()()()())))()()(()()())()))"
Returns: 2
"(((()())()()))(()())((((())))()((())()))(())(()())"
Returns: 0
"((((((((()))((())()(((((())))))((((((())))))))))))"
Returns: 2
"(((())()()((((()()())(()))()()()()()(())())((())))"
Returns: 2
"())(())))((((((((())())()(((())((()()(())())))))))"
Returns: 6
"((((()))((())()))(((((()())()))(((((())))))((())))"
Returns: 2
"((()()(())(()()()()()()()(())())())())))"
Returns: 2
"(()(())(())))((()))(()(()(()))"
Returns: 2
"(((()))))(()((()))))"
Returns: 2
"()(()())((()))((()()()(())))((()))()(()())()()(())"
Returns: 0
"((()(())()(()()())(((())()(()()(()((()))())))))())"
Returns: 0
"((())(()((((((((())())))))(()))))(((((())()())))))"
Returns: 0
"())((()(()(())(()()))()()()()()()((())()()()()()))"
Returns: 2
"(()()()(()))((((())))((()()()()(())))()))(())))())"
Returns: 4
"(((((((((())))()))()))))((((((((()))())())))))))))"
Returns: 4
"((((()))())((()())))"
Returns: 0
"()(((((((()))))(((()))(())))))"
Returns: 0
"()(()((())))))(()())"
Returns: 2
"((())())()())(())((()()()())(((())))()))((())(()()"
Returns: 4
"(())((())()()))()()))())()())()())()()()()()()()()"
Returns: 6
"(()()()())((()(()))()())())()()()()()())((()()()()"
Returns: 4
"((((()()()(()))(((()))()(()())(())))(())))(())()))"
Returns: 2
"(()))(())(())())((()(()())())(())(()()()())()()(()"
Returns: 4
"((((((()))))))(((())))(()(((()))((((()()()))))((()"
Returns: 4
"(((())((((()(()()())))()()())()((()(())(())(((()))"
Returns: 6
"(((()))())()()(()))())(()())()(()))((())))()()())"
Returns: 5
"(((((((())))()))))()(()(()((())(((((())))(())))))"
Returns: 1
"(((()))(()(())((((()(()((())(((()))(((())((()))))"
Returns: 9
"(((())))((())(()))((()()()(()(((()()()())))(((())"
Returns: 5
")()())(((()))()(()(()()())((())()(())((()))))(())"
Returns: 3
"(())(((()())(())()((())))()(()())(())()())())))))"
Returns: 5
"((())()))((())((((((())(((()))))))(()(()())))))))"
Returns: 3
"()()())((((()())))(()()))((()(()(()(())()(())()()"
Returns: 5
"(((((((((((((((((((((((((((((((((((((((((((((((((("
Returns: 50
"))))))))))))))))))))))))))))))))))))))))))))))))))"
Returns: 50
")))))))))))))))))))))))))((((((((((((((((((((((((("
Returns: 50
")))((("
Returns: 6
")("
Returns: 2
"())("
Returns: 2
")())(()(("
Returns: 5
")))))((((("
Returns: 10
"()()((()())()((()()()()))))()()((()())()((()()()()"
Returns: 4
")())))(((((()((((())((("
Returns: 15
")(())("
Returns: 2
"()))))((((()"
Returns: 8
"()))((()"
Returns: 4
"))(("
Returns: 4
"()))))))((())(((((()()("
Returns: 13
")(("
Returns: 3
")()))((()("
Returns: 6
"))))(((()"
Returns: 7
"())(())((()))))()((())))()())())())()()()((("
Returns: 10
"))())))(((((("
Returns: 11
"(()())))(()"
Returns: 3
"((("
Returns: 3
"))("
Returns: 3
"))))))(("
Returns: 8
"())))(((("
Returns: 7
"())))("
Returns: 4
"(()))("
Returns: 2
"))))(())(()"
Returns: 5
")))()()("
Returns: 4
"))))))))))))))))))))()))((((((((((()((((((((((((("
Returns: 45
"()))("
Returns: 3
")))(("
Returns: 5
")()()()("
Returns: 2
")))()((("
Returns: 6
"((((())))))))))((((("
Returns: 10
")((("
Returns: 4
"))))(())((((()"
Returns: 8
"))))(((("
Returns: 8
")"
Returns: 1
")()("
Returns: 2
")))))))((())()(((())))()()("
Returns: 9
"())()("
Returns: 2
"))"
Returns: 2
"(())))(()))(((((((())"
Returns: 9
"))))(((((((((("
Returns: 14
"(()))((())"
Returns: 2
"("
Returns: 1
")((()"
Returns: 3
")))))))))(())))(((("
Returns: 15
")())("
Returns: 3
"())"
Returns: 1
"))((("
Returns: 5
")(()((((()))))))()()(()(()(())()()()))())("
Returns: 4
"())(()"
Returns: 2
"))))"
Returns: 4
"))))))))))))))))))((()))()(())(())(((((((((((((((("
Returns: 34
"(((((((((((((((((((("
Returns: 20
"))))))(((((("
Returns: 12