''' 简单描述下原问题:将字符串内所有括号里的内容顺序倒置 举几个例子: 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()
AIxer
AIxer
相关分类