代码之家  ›  专栏  ›  技术社区  ›  laurie

尝试Leetcode问题并超过接收内存?

  •  0
  • laurie  · 技术社区  · 6 年前

    我正在尝试解决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
    
    0 回复  |  直到 6 年前
        1
  •  1
  •   Tané Tachyon    6 年前

    如果当您单击Submit时,LeetCode在对它的全套测试用例运行代码时出错,它应该在屏幕左上角显示您的代码失败的测试用例。如果像我所怀疑的那样,错误发生在一个超大字符串上,那么它显示的测试用例数据将被切断,但是那里会有一个“详细信息”链接,你可以点击查看完整的测试用例。因此,以这种方式获取已知的失败测试用例,然后可以使用它来调试代码。顺便说一句,因为您只需要返回最长的唯一sub的长度,所以根本不需要存储唯一sub——就像您发现每个唯一sub做了如下事情一样 longest = max(longest, len(unique)) 在第一次将“最长”初始化为0之后。