Python 验证字符串时出现问题
我目前正在做一个关于codewars的kata,我必须检查一个字符串是否有效 如果使用的所有括号都正确(例如“(())”->correct”)(())“->not correct),则字符串有效 我的想法是使用以下代码使方法递归:Python 验证字符串时出现问题,python,string,recursion,Python,String,Recursion,我目前正在做一个关于codewars的kata,我必须检查一个字符串是否有效 如果使用的所有括号都正确(例如“(())”->correct”)(())“->not correct),则字符串有效 我的想法是使用以下代码使方法递归: import re def doMagic(s, n): if len(s) == 0: return 0 if n < 0: return n if len(s) == 1:
import re
def doMagic(s, n):
if len(s) == 0:
return 0
if n < 0:
return n
if len(s) == 1:
if s[0] == '(':
n += 1
elif s[0] == ')':
n -= 1
return n
if s[0] == '(':
n += 1
elif s[0] == ')':
n -= 1
n += doMagic(s[1:], n)
print(n)
return n
def valid_parentheses(string):
string = re.sub("[^()]", "", string)
openPars = 0
return True if doMagic(string, openPars) == 0 else False
重新导入
def doMagic(南、北):
如果len=0:
返回0
如果n<0:
返回n
如果len=1:
如果s[0]=='(':
n+=1
elif s[0]==')':
n-=1
返回n
如果s[0]=='(':
n+=1
elif s[0]==')':
n-=1
n+=doMagic(s[1:],n)
打印(n)
返回n
def有效括号(字符串):
string=re.sub(“[^()]”,“”,string)
openPars=0
如果doMagic(string,openPars)==0,则返回True,否则返回False
(我过滤字符串,因为其中可能有随机字符)
除了输入“()”,代码大部分都有效
有人知道为什么它在这种特定情况下不起作用吗?您应该尝试调试它并逐步完成代码。检查相关变量并查看它们何时开始给出意外值。我找不到返回
True
的输入,例如:有效括号((())”
->False
。我遗漏了什么?当len(s)==0
时,您应该返回n
,而不是0
@MarkMeyer。有趣的是,在codewars上,所有测试用例要么为false,要么为空字符串。我在某个地方防卫性地搞砸了,但我找不到我搞砸的地方。你做过调试吗?我建议您阅读。您应该尝试调试它并逐步完成代码。检查相关变量并查看它们何时开始给出意外值。我找不到返回True
的输入,例如:有效括号((())”
->False
。我遗漏了什么?当len(s)==0
时,您应该返回n
,而不是0
@MarkMeyer。有趣的是,在codewars上,所有测试用例要么为false,要么为空字符串。我在某个地方防卫性地搞砸了,但我找不到我搞砸的地方。你做过调试吗?我建议你读书。