文章目錄
- 反轉每對括號間的子串
反轉每對括號間的子串
- 給出一個字符串s, 僅含有小寫英文字母和英文括號’(’ ‘)’;
- 按照從括號內到外的順序,逐層反轉每對括號中的字符串,并返回最終的結果;
- 結果中不能包含任何括號;
示例1
輸入:
(abcd)
輸出:
dcba
示例2
輸入:
(u(love)i)
輸出:
iloveu
說明:先反轉內部的love子串,然后反轉整個字符串;
示例3
輸入:
(ed(et(oc))el)
輸出:
leetcode
示例4
輸入:
a(bcdefghijkl(mno)p)q
輸出:
apmnolkjihgfedcbq
示例5
輸入:
a(bcdefghijkl(mno)p)
輸出:
apmnolkjihgfedcb
python實現
- 棧數據結構
# 輸入數據
s = input().strip()# 看到括號,借助棧結構
# 遍歷每個字符,( 和字母入棧
stack = []
total_string = ""
inner_string = ""
for c in s: # 只反轉括號內部的字符串if not stack and c.isalpha():if inner_string:total_string += inner_stringinner_string = ""total_string += ccontinueelif c == "(":stack.append(c)elif stack and c.isalpha():stack.append(c)else: # ) 出棧inner_string = ''while stack:cur_c = stack.pop()if cur_c != "(":inner_string += cur_celse:break# 反轉的內部字符串按照字符一次入棧if stack:for cur_c in inner_string:stack.append(cur_c)if total_string and inner_string:total_string += inner_stringprint(total_string)
elif total_string:print(total_string)
else:print(inner_string)