ホームページ > ウェブフロントエンド > jsチュートリアル > LeetCode: ローマ数字から整数へ

LeetCode: ローマ数字から整数へ

Mary-Kate Olsen
リリース: 2024-12-17 17:38:18
オリジナル
981 人が閲覧しました

LeetCode: Roman Numeral to Integer

ローマ数字は、今日でも使用されている古代の数字体系です。それらを通常の整数に変換することは、プログラミングの一般的な課題です。この変換をエレガントに処理するソリューションを詳しく見てみましょう。

ローマ数字の体系

コードに入る前に、ローマ数字がどのように機能するかを理解しましょう。

  • 基本記号: I (1)、V (5)、X (10)、L (50)、C (100)、D (500)、M (1000)
  • 数字は通常、大きいものから小さいものへ、左から右に書かれます
  • 小さい数値が大きい数値の前にある場合、それは引き算を意味します

解決策

function romanToInteger(str) {
  let symbols = {
    I: 1,
    V: 5,
    X: 10,
    L: 50,
    C: 100,
    D: 500,
    M: 1000,
  }

  let result = 0

  for (let i = 0; i < str.length; i++) {
    const current = str[i]
    const next = str[i + 1]

    if (symbols[current] < symbols[next]) {
      result -= symbols[current]
    } else {
      result += symbols[current]
    }
  }

  return result
}

ログイン後にコピー

仕組み: ステップバイステップ

1.シンボルマッピング
まず、各ローマ数字を対応する整数値にマップするオブジェクトを作成します。これにより、値をすばやく簡単に検索できるようになります。

2.文字列の反復
入力文字列内の各文字をループし、現在の文字と次の文字の両方を追跡します。

3.コアロジック
各文字について、その値を次の文字の値と比較します。

  • 現在の値が次の値より小さい場合は、それを減算します (IV = 4 のようなケースを処理します)
  • それ以外の場合は、それを結果に追加します (VI = 6 のようなケースを処理します)

romanToInteger("III") → 3
各 I は結果に 1 を加えます

romanToInteger("IV") → 4
V 未満なので I が減算されます

romanToInteger("IX") → 9
X

より小さいので減算されます

結論

このソリューションは、単純な比較手法を使用して、ローマ数字から整数への変換をエレガントに処理します。このコードは簡潔でありながら、すべての有効なローマ数字入力を処理できるほど強力です。

以上がLeetCode: ローマ数字から整数への詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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