擅长:python、mysql、java
<pre><code>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))
</code></pre>
<p>这样做的目的是尽可能长时间地“向内”操作(其中“向内”甚至不意味着“嵌套”,只要有任何左括号,它就会一直进行下去),因此最内层的对将首先翻转,然后在递归返回时翻转其余的对。这种方式“并行”括号似乎也能工作,而“第一个左括号”和“最后一个结束括号”的简单配对并不能很好地处理它们。或者至少我是这么想的。
</p><hr/>
顺便说一句:递归只是<code>rfind</code>这里的一个复杂的替代:
^{pr2}$
<p>(。。。TBH:现在我尝试了,递归魔法在字符串中的空括号<code>()</code>上消失,而这个方法有效)</p>