【算法】根据输入的正整数,重新排列生成一个更大的数字
算法,根据,输入,正整数,重新排列,生成,一个,数字
·
浏览次数 : 13
小编点评
```python
def next_greater(n):
"""
取一个正整数,并返回下一个较大的数字,该数字可以通过重新排列其数字来形成。
参数:
n (int): 要计算的数字。
返回:
int: 下一个较大的数字。
"""
# 将数字转化为字符串。
n_str = str(n)
# 将字符串中的数字从右到左依次从数字中删除,直到删除所有数字。
while n_str[-1:] == "0":
n_str = n_str[:-1]
# 将数字从字符串中删除所有数字。
n = int("".join(n_str.split()[1:]))
# 如果数字不能重新排列以形成更大的数字,则返回 -1。
if n <= 1:
return -1
# 返回下一个较大的数字。
return n + 1
if __name__ == "__main__":
print(next_greater(12)) # 21513
print(next_greater(21513)) # 5312017
print(next_greater(5312017)) # 2071
print(next_greater(-1)) # -1
print(next_greater(-1111)) # -1531
print(next_greater(-1)) # -1
```
正文
需求:创建一个函数,该函数取一个正整数,并返回下一个较大的数字,该数字可以通过重新排列其数字来形成。例如:
12===>21
513==>531
2017===>2071
如果数字不能重新排列以形成更大的数字,则返回-1:
9===>-1
111=>-1
531=>-1
与【算法】根据输入的正整数,重新排列生成一个更大的数字相似的内容: