мой код кажется правильным, но мне нужно его вернуть -1, если не больше, число не может быть сгенерирован:следующий наибольшее число с одинаковыми цифрами
def next_bigger(n):
strNum = str(n)
length = len(strNum)
for i in range(length-2, -1, -1):
current = strNum[i]
right = strNum[i+1]
if current < right:
temp = sorted(strNum[i:])
next = temp[temp.index(current) + 1]
temp.remove(next)
temp = ''.join(temp)
return int(strNum[:i] + next + temp)
else:
return -1
return n
Моя попытка решить эту проблему не работает: добавление else
это то, что я считал альтернативой тому, когда current
больше, чем right
.
Пожалуйста, помогите!
Можете ли вы привести примеры значений, которые вы хотите быть возвращены в течение некоторого ввода? –
Несколько вещей помогут здесь - во-первых, было бы здорово получить некоторые комментарии в этом коде, чтобы мы могли попытаться понять, что это решение пытается сделать. Во-вторых, вы должны показать несколько примеров 'next_bigger' с результатом, который он сгенерирован. Это идеальный вариант, если вы показываете оба тестовых примера, которые работают, а те, которые нет. – mgilson
Test.assert_equals (next_bigger (12), 21) Test.assert_equals (next_bigger (513), 531) Test.assert_equals (next_bigger (2017), 2071) Test.assert_equals (next_bigger (414), 441) Тест .assert_equals (next_bigger (144), 414) –