b bd 完成括號匹配(記錄左括號數)

2022-02-24 13:13:17 字數 1071 閱讀 5695

給出乙個括號序列s,允許你在s的開始和結尾處新增一定數量的左括號('[')或者右括號(']')使其變為乙個合法的括號匹配序列。你能求出新增最少的括號之後的合法的括號匹配序列是什麼嗎?

思路:實時記錄左括號的數量l,如果遇到右括號時,若左括號數量l為0,則證明需要在當前右括號前面增加乙個左括號[

def solve(s):

n,l,ans=len(s),0,''

for i in range(n):

t=''

if s[i]=='[':

l+=1

t=s[i]

else:

if l:

l-=1

t=']'

else:

t=''

ans+=t

while l:

ans+=']'

l-=1

return ans

s=input()

print(solve(s))

這是第一次寫的**,只過了60%,原因是

輸入:]]][[[[

預期:[[]][[[[]]]]

實際: [ [ [ [] ] ]](我拆分了一些,確實是對的)

這個額外新增數雖然是7,但生成括號也是對的啊,原因在於:當遇到右括號,且手頭沒有左括號可以拿出時,這個額外新增的左括號需要加在字串的最左邊的(服了,這麼死板)

def solve(s):

n,l,ans=len(s),0,''

for i in range(n):

if s[i]=='[':

l+=1

ans+=s[i]

else:

if l: l,ans=l-1,ans+']'

else: ans='['+ans+']'

while l:

l,ans=l-1,ans+']'

return ans

s=input()

print(solve(s))

完成括號匹配

合法的括號匹配序列被定義為 1.空串 是合法的括號序列 2.如果 x 和 y 是合法的序列,那麼 xy 也是乙個合法的括號序列 3.如果 x 是乙個合法的序列,那麼 x 也是乙個合法的括號序列 4.每個合法的括號序列都可以由上面的規則生成 例如 都是合法的。牛牛現在給出乙個括號序列s,牛牛允許你執行...

括號匹配(未完成)

寫了乙個小時,想模擬一下。結果考慮了很多地方,到最後還是有個地方無法解決,就是 只需要新增乙個 即可,但是我的卻無法判斷str i 以後的字元,因為我的只能判斷str i 以前的元素,在更新str i k 的時候,無法判斷str i 是否可以通過改變str i k 達到更優。所以必須在判斷str i...

記錄六 括號匹配

給出乙個僅僅包含 的字元,判斷輸入的字串是否是有效的,空字串是有效的。例 input output true input output true input output false 思路 括號匹配是資料結構棧的典型應用,首先將第乙個元素進行入棧,然後將後面的元素與棧頂元素進行比較,如果與棧頂元素匹...