'''
简单描述下原问题:将字符串内所有括号里的内容顺序倒置
举几个例子:
s = 'a(bc)d'
Output should be : 'acbd'
s = 'a(bc)(de)f'
Output : 'a cb ed f'
s = 'a(bc(de))f'
Output : a decb f
‘’‘
# 问题是 当第一次使用该函数时,运行这条语句时
# for idx, each in enumerate(string): # Alas!
# 这个 string 在递归返回时,最外层的 string 它仍旧不变,整个过程都是原始输入
# 因此它就继续循环,所以仍然可以找到 '(' 或 ')' 也因此得不到正确结果了
# 这也是和C语言不一样的地方
# 当然使用正则表达式也可以轻松解决,但这样就不可以么?我的水平还不够,希望大家能帮个忙, 谢谢!
# 我考虑过引入一个变量,但不好跟踪判断
# 代码如下:
def findrb(string): # 找右括号
for idx, each in enumerate(string): # Alas!
if each == ')':
string[:idx + 1] = string[:idx][::-1]
break
elif each == '(':
string = string[:idx] + findrb(string[idx + 1:])
return (string)
def Main():
s = 'a(bc)d'
nsl = list(s)
print(''.join(findrb(nsl)))
if __name__ == "__main__":
Main()
添加回答
举报
0/150
提交
取消