刷题(十二)

1|0题目


让函数PermulationStep(num)接受传递的num参数,并使用相同的数字返回大于num的下一个数字
例如:如果num为123,则返回132; 如果为12345,则返回12354. 如果一个数字没有更大的排列,则返回-1(即999)

例子
输入:11121
输出:11211

输入:41352
输出:41532

2|0分析


这里可以使用while...else...的语法,当满足更大排列的时候,在while中执行一定的算法,返回下一个大于num的数字,如果不满足更大排列(比如只有一位小数、或者三位数字都相同),这时候执行不了while中的算法,直接进入else。python中有while...else...,for...else的特殊用法,表示当while/for循环正常执行完而不退出的情况下,接着执行else代码块,而一旦while/for中跳出了循环,就不会执行else代码块

3|0代码实现


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))

__EOF__

本文作者cnhkzyy
本文链接https://www.cnblogs.com/my_captain/p/12821748.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!
posted @   cnhkzyy  阅读(163)  评论(0编辑  收藏  举报
编辑推荐:
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
点击右上角即可分享
微信分享提示