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

  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值