2017阿里巴巴算法工程师在线测试

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

你可能感兴趣的:(实习在线测试题)