刷题

Posted my_captain

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了刷题相关的知识,希望对你有一定的参考价值。

题目

让函数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))




以上是关于刷题的主要内容,如果未能解决你的问题,请参考以下文章

#yyds干货盘点# 前端歌谣的刷题之路-第一百四十六题-双列布局-flex

#yyds干货盘点# 前端歌谣的刷题之路-第一百四十七题-三列布局-浮动

算法刷题范围建议 和 代码规范

算法刷题范围建议 和 代码规范

有哪些新手程序员不知道的小技巧?

有哪些新手程序员不知道的小技巧?