ホームページ  >  記事  >  Java  >  提供された Java コードは、配列や文字列を使用せずに、どのようにして整数を反転しますか?

提供された Java コードは、配列や文字列を使用せずに、どのようにして整数を反転しますか?

Patricia Arquette
Patricia Arquetteオリジナル
2024-11-04 21:41:02887ブラウズ

How does the provided Java code reverse an integer without using arrays or strings?

Java で配列を使用せずに整数を反転する

あなたのクエリは、配列や文字列に頼らずに整数を反転することに関するものです。次のコード スニペットの背後にある理論的根拠を理解するのが難しい場合があります:

while (input != 0) {
    reversedNum = reversedNum * 10 + input % 10;
    input = input / 10;   
}

整数反転の原理

このアルゴリズムの背後にあるロジックを理解するには、次の概念を考慮してください。

  • 係数 (%): 入力を 10 で割った場合、結果は最後の桁になります。 (例: 1234 % 10 は 4 に相当します。)
  • 10 による乗算: 整数を 10 で乗算すると、整数が「左にシフト」され、その右に 0 が追加されます。 (例: 5 * 10 = 50。)
  • 10 による除算: この演算は、右端の桁を削除します。 (例: 75 / 10 = 7。)

擬似コード

逆転アルゴリズムは次の手順に従います。

  1. 入力の右端の桁。
  2. 抽出した桁を reversedNum 変数に追加します。
  3. reversedNum に 10 を乗算して、その桁を左にシフトします。
  4. 入力を 10 で除算して、調べた数字を削除します。
  5. 入力がゼロになるまでステップ 1 ~ 4 を繰り返します。

作業コード

これは更新されたバージョンです大きな入力整数に対応し、オーバーフローの可能性を処理する提供されたコード:

<code class="java">public int reverseInt(int input) {
    long reversedNum = 0;
    long input_long = input;

    while (input_long != 0) {
        reversedNum = reversedNum * 10 + input_long % 10;
        input_long = input_long / 10;
    }

    if (reversedNum > Integer.MAX_VALUE || reversedNum < Integer.MIN_VALUE) {
        throw new IllegalArgumentException();
    }
    return (int) reversedNum;
}

奇数のみを反転

整数の奇数桁のみを反転するには、次のように実装できます。同じアルゴリズムですが、偶数桁をスキップする条件文を追加します。例:

public int reverseOddDigits(int input) {
    long reversedNum = 0;
    long input_long = input;

    while (input_long != 0) {
        if (input_long % 2 == 1) {
            reversedNum = reversedNum * 10 + input_long % 10;
        }
        input_long = input_long / 10;
    }

    if (reversedNum > Integer.MAX_VALUE || reversedNum < Integer.MIN_VALUE) {
        throw new IllegalArgumentException();
    }
    return (int) reversedNum;
}</code>

この変更されたコードを使用すると、入力整数の奇数桁を選択的に反転できるようになりました。

以上が提供された Java コードは、配列や文字列を使用せずに、どのようにして整数を反転しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。