【发布时间】:2019-05-02 07:31:36
【问题描述】:
我正在编写一个程序来反转python中括号中的子字符串。结果字符串不应包含任何括号。我正在打印 b1 和 b2 以及 ch 用于测试目的。似乎在while循环内for循环的第二次迭代中,b1变量没有用正确的索引更新。 我尝试编写如下解决方案:
def reverseParentheses(s):
r = s
sstring = ''
astring = ''
b1 = b2 = 0
count = 0
for ch in s:
if ch == '(':
count+=1
elif ch ==')':
count+=1
else:
pass
while True:
b1 = b2 = 0
for ch in r:
if ch == '(':
b1 = r.index(ch)
print("b1= ",b1, ch)
if ch == ')':
b2 = r.index(ch)
print("b2= ",b2, ch)
sstring = r[b2-1:b1:-1]
print(r)
print(sstring)
astring = r[0:b1]+sstring+r[b2+1:]
print(astring)
r = astring
break
if len(astring)+count == len(s):
break
return r
s = "a(bcdefghijkl(mno)p)q"
print(reverseParentheses(s))
这是我得到的输出: aonmpbcdefghijklq 这是我期望的输出: apmnolkjihgfedcbq
【问题讨论】:
-
你的预期输出是什么?
-
它输出: b1= 1 ( b1= 1 ( b2= 17 ) a(bcdefghijkl(mno)p)q onm(lkjihgfedcb aonm(lkjihgfedcbp)q b1= 4 ( b2= 17 ) aonm (lkjihgfedcbp)q pbcdefghijkl aonmpbcdefghijklq aonmpbcdefghijklq.最后一行是程序的最终结果
-
在最深的嵌套括号级别上查找括号索引,在中间反转字符,重复直到没有括号为止
-
不要在 cmets 中回答,edit 你的问题要包括预期输出和实际输出
-
是的,这是对问题的正确评估。
标签: python python-3.x substring