TopcoderArchiveVisit Topcoder
SRM25 May 2011
SRM 521

MissingParentheses

Problem statement, definition, constraints, and public examples.

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.
As examples, "(()())", "" and "(())()" are well formed strings and "())(", "()(" and ")" are malformed strings.

Given a String par of parentheses, return the minimum number of parentheses that need to be inserted to make it into a well formed string.

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

  1. "(()(()"
    Returns: 2
    The string below is a possible well formed string you can get to by inserting the two closing parentheses marked. (())(()) ^ ^
  2. "()()(()"
    Returns: 1
    You can fix the string by inserting a single closing parenthesis at the end.
  3. "(())(()())"
    Returns: 0
    The input string is well formed, so no insertion is needed.
  4. "())(())((()))))()((())))()())())())()()()"
    Returns: 7
Back to all problems