在解碼字符串的過程中,如何處理嵌套的括號對? 字符串的編碼與解碼
Bukalapak印尼優(yōu)選跨境問答2025-05-227381
在Python中,可以使用棧數(shù)據(jù)結(jié)構(gòu)來處理嵌套的括號對。當(dāng)遇到左括號時,將其壓入棧中;當(dāng)遇到右括號時,檢查棧頂?shù)脑厥欠衽c其匹配,如果匹配則出棧,否則說明有未匹配的左括號,需要繼續(xù)解析。 以下是一個簡單的實現(xiàn):
def decode(s):
stack = []
pairs = {")": "(", "]": "["}
i = 0
while i < len(s):
if s[i] in pairs:
j = s.find(pairs[s[i]], i)
if j != -1:
stack.append(s[i])
stack.append(pairs[s[i]])
i = j + 2
else:
return 'Error'
elif s[i] == '(':
stack.append(s[i])
elif s[i] == ')':
if not stack or stack[-1] != '(':
return 'Error'
stack.pop()
i += 1
return ''.join(reversed(stack))
在這個函數(shù)中,我們首先定義了一個字典pairs
來存儲左括號和右括號的對應(yīng)關(guān)系。然后,我們使用兩個指針i
和j
分別遍歷字符串s
。當(dāng)遇到左括號時,其壓入棧中;當(dāng)遇到右括號時,我們檢查棧頂?shù)脑厥欠衽c其匹配,如果匹配則出棧,否則說明有未匹配的左括號,需要繼續(xù)解析。最后,棧中的元素依次彈出,得到最終的結(jié)果。
本文內(nèi)容根據(jù)網(wǎng)絡(luò)資料整理,出于傳遞更多信息之目的,不代表金鑰匙跨境贊同其觀點和立場。
轉(zhuǎn)載請注明,如有侵權(quán),聯(lián)系刪除。