码迷,mamicode.com
首页 > 编程语言 > 详细

【算法】 小知识

时间:2017-05-14 23:39:04      阅读:233      评论:0      收藏:0      [点我收藏+]

标签:过程   大括号   记录   没有   不为   否则   括号   知识   replace   

  记录一些在我看来有意思的小算法知识

■  识别有效的括号字符串

  以小括号为例,在带括号的字符串中,如果只提取出括号作为特征,"()",""(空串),"(()(()(())))"这些是有效的括号字符串,虽然有嵌套但是没有乱套,每个左括号都可以找到正确的右括号配对

  而")(())","(((","("等这些字符串就是非法的

  有效的括号字符串的要求应该有1.左括号和右括号数量应该相等 2. 不能有多余的右括号出现在左括号的左边。

  在网上看到一个很聪明的方法就是:

    从头开始扫描字符串,设置count=0,每扫描一个字符,如果是左括号就count+=1,如果是右括号count-=1,只要保证扫描过程中count始终不为负且count最终==0就表明字符串合法

  另外一种方法,适用不仅仅是小括号,中、大括号也存在时的情况:

    while True:不断去掉字符串中相邻的括号对,也就是说replace("()",""),replace("[]",""),replace("{}",""),一直到没有任何相邻括号对存在为止。此时如果字符串已经成为空串那么表明其是有效括号字符串,否则为无效。

【算法】 小知识

标签:过程   大括号   记录   没有   不为   否则   括号   知识   replace   

原文地址:http://www.cnblogs.com/franknihao/p/6823813.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!