整数N任选其中一段反转排列后最大可能值

 #编程: 给一个整数N,可以取其中任意一段反转排列,求反转后最大可能值。

 # 例如:N= 5083 反转508 得到 8053 为最大。 N=959489 反转 59489 得到 998495 为最大. N =401, 不用反转, 最大401.

 # 运行结果及报错内容

 #我的解答思路和尝试过的方法

 #一个 Java, python, C++ 任选编程; Input: N output: 最大值

给一种递归解决方案:

import numpy as np

def turn_and_max(src,N,start=0):
    lst = [int(w) for w in N]
    max_index = np.where(lst==np.max(lst))
    if max_index[0][0]!=0:
        nums = []
        for mi in max_index[0]:
            if mi<len(N)-1:
                new_N = N[:mi+1][::-1]+N[mi+1:]
            else:
                new_N = N[::-1]
            nums.append(int(new_N))
        print(f'反转后的最大数字:{src[0:start]+str(max(nums))}')
    else:
        start +=1
        turn_and_max(src, N[1:],start)

N = input('请输入N:').strip()
turn_and_max(N,N)

correction: N=410 不用反转, 最大410

找出从右数最大的数,把他反转