需要帮助减少python代码的执行时间吗
正如标题所说,我需要帮助缩短我作为在线法官编写的代码的执行时间,我正在编译它,这给了我一个超出时间限制的错误,即使代码似乎可以工作,并且在我编译它时给出了正确的答案 问题是: 比较字符串列表并找出不同字符串的数量,如果两个字符串完全相同,或相同但相反,则认为它们“相同”(不不同)。字符串仅包含字母a-z,全部为小写,最多包含10个字符。提供的每一组最多有5000个字符串 例如,字符串“abc”与“cba”以及“abc”相同。“cba”与“abc”以及“cba”相同。列表[“abc”、“cba”、“bac”]中有两个不同的字符串 编写一个函数answer(x),它接受一个字符串列表x,并使用此相同的定义返回不同字符串的数量 我的代码:需要帮助减少python代码的执行时间吗,python,execution-time,Python,Execution Time,正如标题所说,我需要帮助缩短我作为在线法官编写的代码的执行时间,我正在编译它,这给了我一个超出时间限制的错误,即使代码似乎可以工作,并且在我编译它时给出了正确的答案 问题是: 比较字符串列表并找出不同字符串的数量,如果两个字符串完全相同,或相同但相反,则认为它们“相同”(不不同)。字符串仅包含字母a-z,全部为小写,最多包含10个字符。提供的每一组最多有5000个字符串 例如,字符串“abc”与“cba”以及“abc”相同。“cba”与“abc”以及“cba”相同。列表[“abc”、“cba”、
def answer(x):
b=0
ph=[]
rand=0
for y in x:
comp=list(y)
ph.append(comp)
while b<len(ph)-1:
j=b+1
while j<len(ph):
if(len(ph[b])==len(ph[j])):
i=0
while(i<len(ph[b])):
if ph[b][i]==ph[j][i]:
rand+=1
elif ph[b][i]==ph[j][len(ph[b])-1-i]:
rand+=1
i+=1
if rand==len(ph[b]):
ph.pop(j)
rand=0
j+=1
b+=1
return len(ph)
def应答(x):
b=0
ph=[]
兰德=0
对于x中的y:
comp=列表(y)
博士(综合)
而b不需要进行序列字符比较来检查字符串标识
字符串在Python中是不可变的。只要把字符串及其反面放在字典里,然后总是对照字典检查
def answer(x):
seen = {}
count = 0
for s in x:
if s not in seen:
seen[s] = True
seen[s[::-1]] = True
count +=1
return count
这可以用set()
函数以尽可能短的时间直接完成,但它只会删除完全相同的字符串。因此,要删除反向字符串,还需要一个循环,但在使用set()
过滤出类似字符串(未反向)之前,这将大大减少循环迭代次数
>>> def getUnique(st):
... st = set(st)
... unique = set()
... for x in st:
... if x[::-1] not in unique:
... unique.add(x)
... return list(unique)
...
>>> strings = ['abc','def','ghi','abc','cba','ihg','jkl','lkj','the']
>>> getUnique(strings)
set(['the', 'abc', 'lkj', 'ihg', 'def'])
这个问题可能比StackOverflow更适合CodeReview,您可能会得到更好的帮助,因为您的代码实际上不起作用。从技术上讲,它进入了一个无限循环。