我正在尝试解决这个问题:http://www.spoj.com/problems/PALIN/.I使用Python,虽然它运行正常但似乎太慢了。我正试图找到一种提高性能的方法。 这是代码:
case=raw_input();
l=int(case)
cas=[]
for k in range(0,l,1):
t=raw_input();
cas.append(t)
con=False
print("")
for k in range(0,l,1):
var=int(cas[k])+1
var=str(var)
con= False
while con != True:
n=int(var)
i=len(var)
j=-1
for i in range(i,0,-1):
j+=1
if var[i-1]==var[j]:
pass
else:
break
if i==1:
print var
con=True
n+=1
var=str(n)
有什么建议吗?先谢谢!
答案 0 :(得分:0)
您正试图找到回文。它消耗大部分时间。为什么不尝试构建呢?考虑一下:
1.1。检查左半部分是低于还是等于右半部分(即31 <= 33)。如果是这样,那么在左半边加1(31 + 1 = 32)。
1.2。反转左半部分构建回文:32-> 23
1.3。得到结果:'32'+'23'='3223'