📜  插入最小的括号以使字符串平衡

📅  最后修改于: 2021-06-26 23:41:20             🧑  作者: Mango

给定字符串数字S。任务是在字符串S中插入最小数量的开括号和闭括号,以使结果字符串保持平衡,并且每个数字d必须在d对匹配括号内。

例子:

方法:

  1. 首先,我们将为第一个元素插入所需的左括号并将其值存储在p中
  2. 然后,我们遍历字符串1字符串的长度和
    • 从上一个元素(int(S [i-1])-int(S [i]))中减去当前元素,并将其值存储在变量w中
    • 如果w> = 0,则插入w右括号并将p更新为(p – w)。除此以外,
    • 插入当前值减去p(int(S [i])– p)的圆括号,并将p更新为等于当前值。
    • 在循环的最后,我们通过插入所需的结束括号来平衡括号。

下面是上述方法的实现:

# Python 3 implementation to balance 
# the string
  
# Function to insert matching parantheses
def ParanthesesNesting(S):
  
    # To check first element if 0 or not
    if S[0]=='0':
        out ='0'
        p = 0
  
    else:
        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
  
        else:
            out = out + '(' * (int(S[i]) - p) + S[i]
            p = int(S[i])
  
    y = out.count('(') - out.count(')')
    out += ')' * int(y)
    return(out)
  
# Driver code 
if __name__ == '__main__': 
    string ='221'
    print(ParanthesesNesting(string))
输出:
((22)1)

如果您希望与行业专家一起参加现场课程,请参阅《 Geeks现场课程》和《 Geeks现场课程美国》。