无重复字符的最长字符串问题,我这样写一直报错
class Solution():
def lengthOfLongestSubstring(self,s):
m=str(s)
q=[]
max_1=0
for i in m:
if i not in q:
q.append(i)
print(q)
else:
sum_1=len(q)
q.clear()
q.append(i)
if max_1<sum_1:
max_1=sum_1
print(max_1)
s1=Solution("abcabcab")
si.lengthOfLongestSubstring()
报错:TypeError: Solution() takes no arguments
然后我改成:s1=Solution()
si.lengthOfLongestSubstring("abcabcab")
又报错:NameError: name 'si' is not defined. Did you mean: 's1'?
请问按照这个思路应该怎么改?
s1=Solution()
si.lengthOfLongestSubstring("abcabcab")
一个是s1 一个是si , 这两个不一样,,
又报错:NameError: name 'si' is not defined. Did you mean: 's1'?
这里提示了:"si 未 定义, 你是不是想写 s1 "
下面是我的理解,供参考:
应该是调用方法和类的定义有点需要改进的地方,如类的定义后面不需要括号,类的方法调用需要实例化,具体算法没有修改,修改如下:
参考链接:
python:类基础_不怕猫的耗子A的博客-CSDN博客_python 类
#https://blog.csdn.net/qq_39314932/article/details/80716295
class Solution:
def lengthOfLongestSubstring(self,s):
m=str(s)
q=[]
max_1=0
for i in m:
if i not in q:
q.append(i)
print(q)
else:
sum_1=len(q)
q.clear()
q.append(i)
if max_1<sum_1:
max_1=sum_1
print(max_1)
s=Solution()
s.lengthOfLongestSubstring("abcabcab")