アルゴリズムチャレンジを解決しようとしています。ここで説明している:配列を回転させて最大の数値を返します。非常に大きな数値に対しては機能しません
を返す必要があります10は、数を取る:56789.回して左に、あなたが67895.
を取得する代わりに最初の数字を維持し、他の数字を左回転:68957.
が最初にしてください2位の桁や他のものを回転させる:68579.
残りを左に最初の3桁を維持して回転させる:68597.は、今ではそれが が回転のみ1桁はそれ自体が残っている最初の4つを維持するため、オーバー です。
あなたは数字の以下の配列を有する:
56789 - > 67895 - > 68957 - > 68579 - > 68597
、あなたは偉大な返す必要があります。68957.
この関数max_rotを呼び出します(または 言語に応じmaxRotか...)
max_rot(56789)は68957
これは私の解決策です。すべてのテストで有効ですが、大きな数値を指定すると失敗します。誰かがなぜ失敗するのか教えてもらえますか?すべての場合に有効です。期待
:ここ
function maxRot(n) {
var numbersArray =[];
n = n.toString().split("")
for(i=0;i<n.length;i++){
var extractedChars = n.splice(i,1)
n.push(extractedChars[0])
numbersArray.push(parseInt(n.join("")))
}
return Math.max(...numbersArray)
}
は、エラーのいくつかの例である507992495、代わりに得た:99249557予想
:433039515、代わりに得た:330395154
期待される:210882952、代わりに得た:188295220
どこが間違っていますか?
JavaScriptを使用しています。それを試して、まだ大きな数字でエラーを返します。 –
あなたのロジックのエラーは何ですか?シーケンスの最初の番号を追加するのを忘れています:)この行をforループ内の他の2行の上に押します:numbersArray.push(parseInt(n.join( "") ))。また、forループを終了した後に最後の文字列を追加する必要があります –
ありがとう、私はそれを逃したとは思えません! –