Skip to content
Related Articles

Related Articles

Insert minimum parentheses to make string balanced

View Discussion
Improve Article
Save Article
  • Last Updated : 07 Aug, 2022
View Discussion
Improve Article
Save Article

Given a string of digits S. The task is to insert a minimum number of opening and closing parentheses into the string S such that the resulting string is balanced and each digit d must be inside d pairs of matching parentheses.

Input: S = 221 
Output: ((22)1) 
The string ((2))((2))(1) is not valid solutions because it is not of minimum length. 
Input: S = 3102 
Output: (((3))1)0((2)) 


  1. First, we will insert the required opening parentheses for the first element and store its value in p
  2. Then we iterate over the string from 1 to length of string and 
    • Subtract current element from the previous element (int(S[i-1]) – int(S[i])) and store its value in a variable w
    • If w >= 0 then insert w closing parentheses and update p to (p – w). Otherwise, 
    • Insert current value minus p (int(S[i]) – p) opening parentheses and update p to equals to the current value. 
    • At the end of the loop, we balance parentheses by inserting the required closing parentheses. 

Below is the implementation of the above approach: 


# Python 3 implementation to balance
# the string
# Function to insert matching parentheses
def ParenthesesNesting(S):
    # To check first element if 0 or not
    if S[0]=='0':
        out ='0'
        p = 0
        out ='('*(int(S[0])) + S[0]
        p = int(S[0])
    # Loop from 1 to length of input_string
    for i in range(1, (len(S))):
        w = int(S[i - 1]) - int(S[i])
        # To check w is greater than or
        # equal to zero or not
        if(w >= 0):
            out = out + ')' * int(w) + S[i]
            p = p - w
            out = out + '(' * (int(S[i]) - p) + S[i]
            p = int(S[i])
    y = out.count('(') - out.count(')')
    out += ')' * int(y)
# Driver code
if __name__ == '__main__':
    string ='221'




Time Complexity: O(n) where n is the length of the string

Auxiliary Space: O(1)

My Personal Notes arrow_drop_up
Recommended Articles
Page :

Start Your Coding Journey Now!