全部评论
你倒着处理,用栈处理括号配对试试
题目描述 小v所在的公司即将举行年会,年会方案设计过程中必不可少的一项就是抽奖活动。小v在本次活动中被委以重任,负责抽奖活动的策划;为了让中奖的礼物更加精美且富有神秘感,打算采用礼品盒来包装奖品,此时小v发挥了自己的创意想捉弄一下获奖的同事,便采取了多重包装来包装奖品。 现给出一个字符串,并假定用一对圆括号( )表示一个礼品盒,0表示奖品,你能据此帮获奖者算出最少要拆多少个礼品盒才能拿到奖品吗? 输入描述: 一行字符串,仅有'('、')'、'0' 组成,其中一对'(' ')'表示一个礼品盒,‘0’表示奖品;输入的字符串一定是有效的,即'(' ')'一定是成对出现的。 输出描述: 输出结果为一个数字,表示小v要拆的最少礼品盒数量 示例1输入输出示例仅供调试,后台判题数据一般不包含示例 输入 复制 (()(()((()(0))))) 输出 复制 5 示例2输入输出示例仅供调试,后台判题数据一般不包含示例 输入 复制 (((0))) 输出 复制 3
最简单的做法就是一直替换连续成对'()'为空直到没有成对的,然后就是长度/2就可以了
我的思路,从前往后,遇到'(',count++,遇到')',count--,遇到0,break。输出count。
初始化计数为0,读取字符遇到左括号+1 遇到右括号-1,直到遇到0停止
def fun(s):
count = 0
for i in range(len(s)):
if s[i] == '0':
return count
elif s[i] =='(':
count += 1
else:
count -= 1
.....直接算到0之前的做括号数-右括号数
我也是通过90%,把数组长度改成1000,就AC了。
相关推荐
10-11 11:52
门头沟学院 Java 点赞 评论 收藏
分享
点赞 评论 收藏
分享