我的函数效率低下,占用了很多时间-Python
我试图解决的问题是: 给定一个字符串,在每个可能的点将该字符串拆分为两个子字符串。最右边的子字符串是后缀。字符串的开头是前缀。确定每个前缀和原始字符串之间公共前缀的长度。求和并返回常用前缀的长度。返回一个数组,其中每个元素“i”是字符串“i”的和 我的解决方案:我的函数效率低下,占用了很多时间-Python,python,Python,我试图解决的问题是: 给定一个字符串,在每个可能的点将该字符串拆分为两个子字符串。最右边的子字符串是后缀。字符串的开头是前缀。确定每个前缀和原始字符串之间公共前缀的长度。求和并返回常用前缀的长度。返回一个数组,其中每个元素“i”是字符串“i”的和 我的解决方案: def commonPrefix(l): size=len(l) #Finding number of strings sumlist=[] #Initializing list that'll store sum
def commonPrefix(l):
size=len(l) #Finding number of strings
sumlist=[] #Initializing list that'll store sums
for i in range(size):
total=0 #Initializing total common prefixes for every string
string=l[i] #Storing each string in string
strsize=len(string) #Finding length of each string
for j in range(strsize):
suff=string[j:] #Calculating every suffix for a string
suffsize=len(suff) #Finding length of each suffix
common=0 #Size of common prefix for each length
for k in range(suffsize):
if(string[k]==suff[k]):
common=common+1
else:
break #If characters at equal positions are not equal, break
total=total+common #Update total for every suffix
sumlist.append(total) #Add each total in list
return sumlist #Return list
我的解决方案占用了很多时间,我需要帮助进行优化。这是一个关于“确定每个前缀和原始字符串之间的公共前缀长度”的问题?简单地确定这个前缀的长度?听起来好像你在试图发现后缀树。@tripleee示例:是的,看起来像后缀树。请参阅,例如,尝试分析您的代码,以便找出哪些代码比较慢。分析器为您提供逐行数据。