python内存地址不变_怎么解决这个Python递归啊,它用的根本就不是同一内存地址啊!...

'''

简单描述下原问题:将字符串内所有括号里的内容顺序倒置

举几个例子:

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
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值