私のコードは正しいようだが、私はそれを返すために-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) –