gpt4 book ai didi

python - 如何从最里面的一对开始反转每对匹配括号中包含的字符串? CodeFights

转载 作者:太空狗 更新时间:2023-10-30 00:58:33 24 4
gpt4 key购买 nike

到目前为止,我已经做到了。我坚持递归。我不知道如何前进,加入和倒退等等。

def callrecursion(s):
a=s.index('(')
z=len(s) - string[::-1].index(')') -1
newStr=s[a+1:z]
# Something is missing here i cant figure it out
print(newStr)
return newStr

def reverseParentheses(s):
if '(' in s:
return reverseParentheses(callrecursion(s))
print('wabba labba dub dub')
else:
return s
string='a(bcdefghijkl(mno)p)q'
reverseParentheses(string)

预期输出:“apmnolkjihgfedcbq”

最佳答案

def reverseParentheses(s):
if '(' in s:
posopen=s.find('(')
s=s[:posopen]+reverseParentheses(s[posopen+1:])
posclose=s.find(')',posopen+1)
s=s[:posopen]+s[posopen:posclose][::-1]+s[posclose+1:]
return s

string='a(bcdefghijkl(mno)p)q'
print(string)
print(reverseParentheses(string))
print('apmnolkjihgfedcbq') # your test

string='a(bc)(ef)g'
print(string)
print(reverseParentheses(string))

想法是尽可能“向内”(“向内”甚至不意味着“嵌套”,只要有左括号就可以),所以最里面的对首先被翻转,然后其余的作为递归返回。这样,“平行”括号似乎也可以工作,而“第一个左括号”和“最后一个右括号”的简单配对并不能很好地处理它们。或者至少那是我的想法。


顺便说一句:递归只是此处 rfind 的复杂替代:

def reverseParentheses(s):
while '(' in s:
posopen=s.rfind('(')
posclose=s.find(')',posopen+1)
s=s[:posopen]+s[posopen+1:posclose][::-1]+s[posclose+1:]
return s;

(... TBH:现在我试过了,递归魔术在字符串中放置的空括号 () 上消失了,而这个有效)

关于python - 如何从最里面的一对开始反转每对匹配括号中包含的字符串? CodeFights,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51101519/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com