没有重复字符的最长子字符串 - 代码在 运行 期间有效,但在提交同一测试用例时失败
Longest Substring without repeating characters - Code works during run , but fails on submit for the same testcase
class Solution:
def lengthOfLongestSubstring(self, s: str,unique=[]) -> int:
i=0
m=0
j=0
l=0
while(i<len(s)):
if(s[i] not in unique):
unique.append(s[i])
m=m+1
l = max(l,m)
i=i+1
else:
unique=[]
j=j+1
i=j
m=0
print(l)
return
输入="c"
在运行代码期间输出 =“1”,但在提交时失败(0)。它也适用于同一测试用例的游乐场调试。想不通。
这是由于 Python 处理函数定义中可变默认参数的方式而出现的问题,在本例中为 unique=[]
。建议的解决方法是:
def lengthOfLongestSubstring(self, s: str,unique=None) -> int:
if unique is None:
unique = []
这是相当 st运行ge 行为,但由于在 Python 中一切都是对象,这似乎意味着此类参数导致函数在每次调用后记住其状态 (在其他语言中表现得更像是一个内部带有静态变量的函数)。我 运行 更改语句的代码似乎解决了问题。以下是对该问题的更完整讨论:
class Solution:
def lengthOfLongestSubstring(self, s: str,unique=[]) -> int:
i=0
m=0
j=0
l=0
while(i<len(s)):
if(s[i] not in unique):
unique.append(s[i])
m=m+1
l = max(l,m)
i=i+1
else:
unique=[]
j=j+1
i=j
m=0
print(l)
return
输入="c" 在运行代码期间输出 =“1”,但在提交时失败(0)。它也适用于同一测试用例的游乐场调试。想不通。
这是由于 Python 处理函数定义中可变默认参数的方式而出现的问题,在本例中为 unique=[]
。建议的解决方法是:
def lengthOfLongestSubstring(self, s: str,unique=None) -> int:
if unique is None:
unique = []
这是相当 st运行ge 行为,但由于在 Python 中一切都是对象,这似乎意味着此类参数导致函数在每次调用后记住其状态 (在其他语言中表现得更像是一个内部带有静态变量的函数)。我 运行 更改语句的代码似乎解决了问题。以下是对该问题的更完整讨论: