我是python的新手,我试图编写算法以找到最长的子字符串而不重复字符。当我明显使用参数调用函数时,我不断收到此错误:“ lengthOfLongestSubstring()缺少1个必需的位置参数:'s'。为什么会突然发作?感谢您的帮助。
class Solution:
def lengthOfLongestSubstring(self, s):
arr = [char1 for char1 in s]
help_arr = [i*0 for i in range(26)]
sub_strings = []
sub = ""
for char in s:
index = ord(char) - ord('a')
if help_arr[index] == 0:
help_arr[index] = int(1)
sub += char
else:
sub_strings.append(sub)
sub = ""
sub += char
help_arr = [i * 0 for i in range(26)]
help_arr[index] = int(1)
max(sub_strings)
def max(arr):
max = 0
index = -1
for i in range(len(arr)):
if len(arr[i]) > max:
max = len(arr[i])
index= i
return print("The answer is '{}', with the length of {}.".format(arr[index], max))
#call to function
lengthOfLongestSubstring("aabcdefffgges")
答案 0 :(得分:0)
错误:“ lengthOfLongestSubstring()缺少1个必需的位置参数:'s'”
看看如何定义此功能:
def lengthOfLongestSubstring(self, s):
这需要两个参数,但是调用它时,只能传递一个参数:
lengthOfLongestSubstring("aabcdefffgges")
在这种情况下,您可以通过不使用class
来解决问题。您所做的事情并不需要它。这也意味着您需要从self
中删除lengthOfLongestSubstring()
参数:
def lengthOfLongestSubstring(s):
arr = [char1 for char1 in s]
help_arr = [i*0 for i in range(26)]
sub_strings = []
sub = ""
for char in s:
index = ord(char) - ord('a')
if help_arr[index] == 0:
help_arr[index] = int(1)
sub += char
else:
sub_strings.append(sub)
sub = ""
sub += char
help_arr = [i * 0 for i in range(26)]
help_arr[index] = int(1)
max(sub_strings)
def max(arr):
max = 0
index = -1
for i in range(len(arr)):
if len(arr[i]) > max:
max = len(arr[i])
index= i
print("The answer is '{}', with the length of {}.".format(arr[index], max))
#call to function
lengthOfLongestSubstring("aabcdefffgges")
在旁注中,您不应执行return print(...)
。 return
在这里没有任何用处,因此我删除了ID。