mein Code scheint richtig, aber ich brauche es -1 zurück, wenn keine größere Zahl erzeugt werden:nächst größere Zahl mit gleichen Ziffern
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
Mein Versuch, dieses Problem zu lösen nicht funktioniert: Hinzufügen der else
ist, was ich wahrgenommen habe, die Alternative zu sein, wenn current
größer als right
ist.
Bitte helfen!
Können Sie Beispiele für Werte, die Sie für eine Eingabe zurückgegeben werden? –
Ein paar Dinge würden hier helfen - Erstens wäre es großartig, einige Kommentare in diesem Code zu bekommen, damit wir versuchen können, ein Gefühl dafür zu bekommen, was diese Lösung versucht zu machen. Zweitens sollten Sie einige Beispiele von 'next_bigger' mit der Ausgabe anzeigen, die generiert wird. Es ist ideal, wenn Sie sowohl Testfälle zeigen, die funktionieren, als auch solche, die nicht funktionieren. – 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) -Test .assert_equals (next_bigger (144), 414) –