回文子串Leetcode 647-性能比较

时间:2019-06-23 16:53:59

标签: python-3.x

我有2个类似的代码片段可以解决此问题,其中一个花费的时间更长(在Leetcode上,我得到了错误-超过了时间限制),而另一个则表现得更好。

给出时间限制错误的代码:

def countSubstrings1(self, s: str) -> int:
        count = 0
        subStr = self.listAllConguousSubArrays(s)
        print(" subStr is -> ", subStr)

        for i in subStr:
            if(i == i[::-1]):
                count += 1

        return count


    def listAllConguousSubArrays(self,s):

        l = list(s)
        for i in range(len(l)+1):
            for j in range(i+1, len(l)+1):
                yield l[i:j] 

这一过程通过了(没有超出时间限制错误):

def countSubstrings(self, s) -> int:
        """
        :type s:  String
        :return: int
        """

        def isPalindrome(self, i, j):
            return s[i:j+1] == s[i:j+1][::-1]

        i =0
        count = 0
        slen = len(s)

        while (i < slen):
            j = slen -1
            while (j >= i):
                if(isPalindrome(self, i, j)):
                    count += 1
                j -= 1

            i += 1

        return count 

两个代码段都是相似的,问题是-为什么第一个代码段在Leetcode上给出超时错误。即,哪部分代码引起了错误?

关于有效调试方法的任何建议吗?

0 个答案:

没有答案