我正在尝试解决Leetcode上的Python问题,它要求您计算并返回包含给定字符串的唯一字符的最长子字符串的长度。这是我测试并且似乎工作的代码但是Leetcode站点不接受并且通知我“内存超出”错误。不知道怎么解决这个问题?
class Solution(object):
def lengthOfLongestSubstring(self, s):
""" First access all of the substrings """
ls_subs = []
unique_subs = []
for i in range(len(s)):
sub = s[i:]
ls_subs.append(sub)
""" Build versions of the substrings which contain unique chars """
for sub in ls_subs:
counter = 0
unique = ""
while counter < len(sub) and sub[counter] not in unique:
unique += sub[counter]
counter += 1
unique_subs.append(unique)
""" Find the longest one """
length = 0
for sub in unique_subs:
if len(sub) > length:
length = len(sub)
return length
如果LeetCode在您单击“提交”时针对其完整的测试用例运行代码时出错,则应该在屏幕的左上角显示代码失败的测试用例。如果我怀疑超大字符串发生了错误,那么它显示的测试用例数据将被切断,但是会有一个“详细信息”链接,您可以单击以查看完整的测试用例。因此,以这种方式获取已知失败的测试用例,您可以使用它来调试代码。顺便说一句,因为你只应该返回最长的独特子的长度,你根本不需要存储唯一的潜艇 - 正如你发现每个独特的子在第一次初始化最长到之后做longest = max(longest, len(unique))
之类的东西0。