【发布时间】:2020-12-09 12:58:20
【问题描述】:
所以我有一个像 123 这样的数字,具有相同数字的立即数是 132。考虑另一个例子,数字是 1238,下一个立即数是 1283。所以对于这个逻辑,我已经实现了一个代码
def findnext(n):
ns=list(map(int,str(n)))
for i in reversed(range(len(ns))):
if i == 0: return n
if ns[i] > ns[i-1] :
break
left,right=ns[:i],ns[i:]
for k in reversed(range(len(right))):
if right[k]>left[-1]:
right[k],left[-1]=left[-1],right[k]
break
return int("".join(map(str,(left+sorted(right)))))
n=int(input())
print(findnext(n))
我需要一个在不使用 itertools 的情况下更优化或更精简代码的逻辑。请帮我!!提前致谢。
【问题讨论】:
-
stackoverflow.com/a/64889338 是您要找的吗?
标签: python python-3.x optimization logic