1. 程式人生 > >【算法】 小知識

【算法】 小知識

count 要求 字符 出現 存在 方法 最終 while 意思

  記錄一些在我看來有意思的小算法知識

■  識別有效的括號字符串

  以小括號為例,在帶括號的字符串中,如果只提取出括號作為特征,"()",""(空串),"(()(()(())))"這些是有效的括號字符串,雖然有嵌套但是沒有亂套,每個左括號都可以找到正確的右括號配對

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

  有效的括號字符串的要求應該有1.左括號和右括號數量應該相等 2. 不能有多余的右括號出現在左括號的左邊。

  在網上看到一個很聰明的方法就是:

    從頭開始掃描字符串,設置count=0,每掃描一個字符,如果是左括號就count+=1,如果是右括號count-=1,只要保證掃描過程中count始終不為負且count最終==0就表明字符串合法

  另外一種方法,適用不僅僅是小括號,中、大括號也存在時的情況:

    while True:不斷去掉字符串中相鄰的括號對,也就是說replace("()",""),replace("[]",""),replace("{}",""),一直到沒有任何相鄰括號對存在為止。此時如果字符串已經成為空串那麽表明其是有效括號字符串,否則為無效。

【算法】 小知識