我有一个函数“ lengthOfLongestSubstring”,如下面的代码所示,需要递归调用子字符串为“ s”的函数(例如s [3:]) 我怎么称呼它?
我试图像这样递归调用: lengthOfLongestSubstring(s [1:])
但是它弹出一个错误,提示“ NameError:未定义名称'lengthOfLongestSubstring'”
class Solution:
def lengthOfLongestSubstring(self, s: 'str') -> 'int':
count = 0
list1 = []
for i in range(len(s)):
if s[i] not in list1:
list1.append(s[i])
count= count+1
print (list1)
else:
substr = s[i:]
if (count < lengthOfLongestSubstring(substr)):
count = lengthOfLongestSubstring(substr)
break
return (count)
预期该函数的递归调用会出现以下错误:
NameError: name 'lengthOfLongestSubstring' is not defined
Line 15 in lengthOfLongestSubstring (Solution.py)
Line 29 in __helper__ (Solution.py)
Line 60 in _driver (Solution.py)
Line 73 in <module> (Solution.py)
答案 0 :(得分:2)
您的lengthOfLongestSubstring
是类中的方法,因此您必须这样称呼它:
self.lengthOfLongestSubstring(substr)
我真的没有必要在类中定义它,我宁愿从中提取全部内容,然后可以正常调用它。只需删除上面带有class Solution
的行,并将所有内容缩进一个标签即可。