正如标题所说,我需要帮助减少我编写的代码的执行时间,因为我正在编译它的在线法官给了我一个超出时间限制的错误,即使代码似乎可以工作并给出正确的答案当我编译它时。
问题:
比较字符串列表并查找不同字符串的数量,其中如果两个字符串完全相同或相同但相反,则将它们视为“相同”(不不同)。字符串仅包含字母 a-z,全部小写,最多 10 个字符。提供的每组最多包含 5000 个字符串。
例如,字符串“abc”与“cba”以及“abc”相同。字符串“cba”与“abc”以及“cba”相同。列表 ["abc,""cba,""bac"] 中有 2 个不同的字符串。
编写一个函数answer(x),它接受字符串列表 x,并使用相同的定义返回不同字符串的数量。
我的代码:
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)
最佳答案
不需要进行串行字符比较来检查字符串身份。
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
关于python - 需要帮助减少 python 代码的执行时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27453344/