刷题(十二)
题目
让函数PermulationStep(num)接受传递的num参数,并使用相同的数字返回大于num的下一个数字
例如:如果num为123,则返回132; 如果为12345,则返回12354. 如果一个数字没有更大的排列,则返回-1(即999)
例子
输入:11121
输出:11211
输入:41352
输出:41532
分析
这里可以使用while...else...的语法,当满足更大排列的时候,在while中执行一定的算法,返回下一个大于num的数字,如果不满足更大排列(比如只有一位小数、或者三位数字都相同),这时候执行不了while中的算法,直接进入else。python中有while...else...,for...else的特殊用法,表示当while/for循环正常执行完而不退出的情况下,接着执行else代码块,而一旦while/for中跳出了循环,就不会执行else代码块
代码实现
def permulationstep(num):
s = list(str(num))
i = len(s) - 1
while i > 0:
if s[i - 1] < s[i]:
s[i - 1], s[i] = s[i], s[i - 1]
return s
else:
i = i - 1
else:
return -1
print(permulationstep(11121))