2017/3/22
今天做了阿里巴巴算法工程师的在线笔试题,时间好紧,只有40分钟,还没来得及调出来,时间就到了,这是后来编译通过的代码,在此贴出来方便大家参考学习。
有n个正整数(每个数小于10亿),将它们表示成字符串形式。对每一个字符串s,可以翻转为新字符串s’,如“1234”可以翻转成“4321”。
现在,将这n个字符串以任意顺序连成一个字符环,每个字符串可以选择是否翻转。在字符环中,从任意一个位置开始,遍历整个环,得到一个长整数。请问,如何才能得到最大的长整数。
Arr = raw_input()
Arr_L = Arr.split(' ')
N = len(Arr_L)
print(N)
for i in range(N):
Str_L = len(Arr_L[i])
if Arr_L[i][0] < Arr_L[i][Str_L-1]:
New = ''
for index in range(Str_L):
New = New+Arr_L[i][Str_L-1-index]
Arr_L[i] = New
for i in range(N):
for j in range(i, N):
if Arr_L[i][0] < Arr_L[j][0]:
Temp = Arr_L[i]
Arr_L[i] = Arr_L[j]
Arr_L[j] = Temp
elif Arr_L[i][0] == Arr_L[j][0]:
Len1 = len(Arr_L[i])
Len2 = len(Arr_L[j])
if Len1 < Len2:
L = Len1
else:
L = Len2
for k in range(1, L):
if Arr_L[i][k] < Arr_L[j][k]:
Temp1 = Arr_L[i]
Arr_L[i] = Arr_L[j]
Arr_L[j] = Temp1
break
Ans = ''
for i in range(N):
print(Arr_L[i])
Ans = Ans+Arr_L[i]
print(Ans)
input:
123 253 789
output:
3
987
352
321
987352321