ホームページ > バックエンド開発 > C++ > ルックアップ テーブルを使用せずに整数をその記述形式に効率的に変換するにはどうすればよいですか?

ルックアップ テーブルを使用せずに整数をその記述形式に効率的に変換するにはどうすればよいですか?

Patricia Arquette
リリース: 2025-01-12 20:12:43
オリジナル
940 人が閲覧しました

How Can I Efficiently Convert Integers to Their Written Forms Without Using Lookup Tables?

ルックアップ テーブルの回避: 整数を単語に変換するための効率的なアルゴリズム

整数を単語表現に変換することは、一般的なプログラミング作業です。ルックアップ テーブルは、小さい数値に対しては簡単な解決策を提供しますが、大きい値に対しては扱いにくくなります。 この記事では、大規模なルックアップ テーブルの使用を回避する、よりスケーラブルで効率的な方法を紹介します。

このアプローチの中核には、いくつかの配列が含まれます。

  • ones: 1 桁の数字 (例: "One"、"Two"、... "Nine") の単語を保持する配列。
  • teens: 11 から 19 までの数字の単語を含む配列。
  • tens: 10 の倍数を表す単語を保持する配列 (例: "20"、"30"、... "90")。
  • thousandsGroups: 千、百万、十億のプレフィックスを含む配列。

アルゴリズムの中心となるのは FriendlyInteger 関数です。これは 3 つのパラメータを取る再帰関数です。

  • n: 変換する整数。
  • leftDigits: n の左側の数字の単語表現 (再帰に使用)。
  • thousands: 現在の千単位のグループ (単位、千、百万など)。

FriendlyInteger は入力整数を再帰的に分解し、単語表現を部分ごとに構築します。 たとえば、1532 を変換すると:

  1. FriendlyInteger(32, "One Thousand", 1): 千の位を処理し、「One Thousand」となります。
  2. FriendlyInteger(32, null, 0): 残りの 32 を処理します。
  3. FriendlyInteger(2, "Thirty", 0): 十の位を処理して「三十」を生成します。
  4. FriendlyInteger(0, "Two", 0): 単位の桁を処理し、「Two」を生成します。
  5. 最終結果は「One Thousand Three Hundred Threety-Two」のように連結されます。

IntegerToWritten 関数はエントリ ポイントとして機能し、メインの変換のために FriendlyInteger を呼び出す前に、ゼロや負の数値などの特殊なケースを処理します。

この再帰的アプローチと事前定義された配列の使用を組み合わせることで、大規模なルックアップ テーブルを必要とせずに整数を記述形式に変換するための効率的でスケーラブルなソリューションが提供され、幅広い数値入力の処理に適しています。

以上がルックアップ テーブルを使用せずに整数をその記述形式に効率的に変換するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート