JavaScript
 Computer >> コンピューター >  >> プログラミング >> JavaScript

JavaScriptで3桁の数字を並べ替えて最大の数を作る方法

問題

正の3桁の整数を1つ引数として受け取り、その各桁を並べ替えることで作れる最大の数を返すJavaScript関数を作成する必要があります。

アプローチ

この問題は、次の手順で解決できます。

  1. まず、入力された数値が実際に3桁であるかを検証します。100未満または999を超える場合は null を返します。
  2. 数値を文字列に変換し、split('') で1文字ずつの配列に分解します。
  3. sort((a, b) => b - a) を使って桁を降順に並べ替えます。これにより、大きい桁が先頭に来ます。
  4. join('') で配列を文字列に結合し、単項プラス演算子(+)で数値型に戻して返します。

コード例

以下は上記のアプローチを実装したコードです。

const num = 149;
const maxRedigit = function(num) {
    if(num < 100 || num > 999)
        return null
    return +num
    .toString()
    .split('')
    .sort((a, b) => b - a)
    .join('')
};
console.log(maxRedigit(num));

出力

941

解説

この例では、入力値 149 の各桁「1」「4」「9」を降順に並べ替えることで、「941」という最大の数が得られます。

ポイントは sort((a, b) => b - a) の部分です。比較関数で b - a を返すことで配列を降順にソートできるため、最大の桁から順に並びます。また、範囲チェックにより3桁以外の入力に対しては安全に null を返すため、堅牢な実装になっています。

  1. 【JavaScript】同じ数字の並び替えで作れる「ちょうど大きい数」を見つける方法

    問題数値 num を唯一の引数として受け取るJavaScript関数を作成する必要があります。この関数が返すべきのは、入力された数値とまったく同じ数字だけ(すべての桁を使い切り、余分な数字を含まない)で構成され、入力値よりちょうど一つ大きい数です。そのような数が存在しない場合は -1 を返します。例const num = 5656;この場合の出力は以下のようになります。const output = 5665;出力の解説5665 は 5656 と同じ数字(5、6、5、6)だけで構成されており、5656 より大きい数の中で最小のものであるためです。アプローチ1:全探索(シンプルな方法)最も直感的な

  2. JavaScriptで数値の階乗の桁数を求める方法

    問題JavaScriptで、数値 num を唯一の引数として受け取る関数を作成することを考えます。この関数は、num の階乗(n!)が何桁になるかを計算し、その桁数を返す必要があります。たとえば、関数への入力が次のような場合を考えてみましょう。入力const num = 7;出力const output = 4;出力の解説7! = 5040 であり、5040は4桁の数字であるため、結果は 4 となります。アプローチ:対数を使った賢い計算方法一見すると、階乗を直接計算して文字列の長さを数えればよさそうに思えます。しかし、階乗は極めて急激に増加するため、少し大きな数でもすぐにJavaScriptの