我有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上给出超时错误。即,哪部分代码引起了错误?
关于有效调试方法的任何建议吗?