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

Pythonでローマ数字を整数に変換するプログラム?


ローマ数字があるとします。それを数値に変換する必要があります。私たちが知っているように、ローマ数字は左から右へ、最大から最小への記号で表されますが、唯一の例外は、記号より1つ少ない記号を表す場合です。いくつかのローマ数字記号の意味は次のとおりです。

  • 'M':1000

  • 「D」:500

  • 「C」:100

  • 'L':50

  • 'X':10

  • 「V」:5

  • 「私」:1

したがって、入力が数字="MCLXVI"のような場合、出力は1166になり、M =1000、C =100、合計は1100、L =50、X =10、VI =6になるため、合計は1166になります。

これを解決するには、次の手順に従います。

上記のように数字のリストを取ります

  • ans:=0

  • n:=数字のサイズ

  • インデックスidxと値cの数値ごとに、実行します

    • idx

      • ans:=ans --d [c]

    • それ以外の場合

      • ans:=ans + d [c]

  • ansを返す

理解を深めるために、次の実装を見てみましょう。

class Solution:
   def solve(self, numeral):
      d = {"M": 1000, "D": 500, "C": 100, "L": 50, "X": 10, "V": 5, "I": 1}
      ans = 0
      n = len(numeral)
      for (idx, c) in enumerate(numeral):
         if idx < n - 1 and d[c] < d[numeral[idx + 1]]:
            ans -= d[c]
         else:
            ans += d[c]
      return ans

ob = Solution()
numeral = "MCLXVI"
print(ob.solve(numeral))

入力

"MCLXVI"

出力

1166

  1. キロメートルをマイルに変換するPythonプログラム

    この記事では、以下に示す問題ステートメントの解決策について学習します。 問題の説明 −距離はキロメートルで与えられ、マイルに変換する必要があります 私たちが知っているように、1キロメートルは0.62137マイルに相当します。 使用する式 Miles = kilometer * 0.62137 それでは、以下の実装の概念を見てみましょう- 例 kilometers = 5.5 # conversion factor as 1 km = 0.621371 miles conv = 0.621371 # calculation miles = kilometers * conv print(k

  2. 16進文字列を10進数に変換するPythonプログラム

    この記事では、以下に示す問題ステートメントの解決策について学習します。 問題の説明 − 16進文字列が与えられたので、それを10進数に変換する必要があります。 問題を解決するための2つのアプローチがあります- ブルートフォースアプローチ 組み込みモジュールの使用 ブルートフォース方式 ここでは、明示的な型キャスト関数、つまり整数を利用します。この関数は、2つの引数、つまり16進数と同等の引数とベース(16)を取ります。この関数は、16進文字列を整数型の同等の10進数に変換するために使用されます。これは、さらに文字列形式に型キャストして戻すことができます。 例 #input strin