【算法】根据输入的正整数,重新排列生成一个更大的数字

算法,根据,输入,正整数,重新排列,生成,一个,数字 · 浏览次数 : 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

与【算法】根据输入的正整数,重新排列生成一个更大的数字相似的内容: