一、题目
题目描述
一个完整的括号字符串定义规则如下:
1、空字符串是完整的。
2、如果s是完整的字符串,那么(s)也是完整的。
3、如果s和t是完整的字符串,将它们连接起来形成的st也是完整的。
例如,"(()())", ""和"(())()"是完整的括号字符串,"())(", "()(" 和 ")"是不完整的括号字符串。
牛牛有一个括号字符串s,现在需要在其中任意位置尽量少地添加括号,将其转化为一个完整的括号字符串。请问牛牛至少需要添加多少个括号。输入描述:
输入包括一行,一个括号序列s,序列长度length(1 ≤ length ≤ 50). s中每个字符都是左括号或者右括号,即'('或者')'.输出描述:
输出一个整数,表示最少需要添加的括号数示例1
输入
(()(()输出
2
二、分析及代码
题意:给一串括号,计算添加最少的括号数可以组成完整的括号对。
分析:遍历一遍,如果是左括号,则left++,否则的话,判断left是否等于0,如果不等于0,则left--,相当于消去一对完整的,如果等于0,则right++。最后计算left+right。代码如下:
s = input() left=0 right=0 for x in s: if x=='(': left+=1 elif x==')': if left!=0: left-=1 else: right+=1 res=left+right print(res)