我没有看到我的代码有任何问题,但是当输入无法产生下一个更大的数字时,我似乎无法返回-1,即531
的输入正在下降。
import itertools as it
def next_bigger(n):
if sorted("531", reverse = True) == list("531"):
return -1
s = tuple(str(n))
for x in it.dropwhile(lambda x: x <= s, it.permutations(sorted(s))):
return int(''.join(x))
return s
有人可以帮忙吗?
答案 0 :(得分:2)
您可以在函数开头简单地使用if
语句来测试该数字是否已经按反向排序顺序。如果它立即排序return -1
:
>>> sorted("531", reverse = True) == list("531")
True