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

Pythonでのローマ字から整数へ


ローマ字のリテラルがあるとします。それらを整数に変換する必要があります。私たちが知っているように、ローマ数字は以下のようにいくつかの異なる記号で表されます-

数字
1
V 5
X 10
L 50
C 100
D 500
M 1000

ローマ数字をよく見ると、数字が「II」であると仮定しているようなものです。つまり、これは2であり、2つの「I」が足し合わされています。 XIIの場合は12なので、実際にはX + II =10 + 2 =12です。4のローマ数字はIIIIではなく、IVです。これは少し注意が必要です。

  • V(5)とX(10)の前に使用して、それぞれ4と9にすることができます

  • X cabをL(50)とC(100)の前に使用して、それぞれ40と90にします

  • CはD(500)とM(1000)の前に使用して、それぞれ400と900にすることができます。

この場合、1から3999までの数値を変換できる1つのローマから整数へのコンバーターを作成します。

これを解決するために、いくつかの可能な数字とその値、および4、9、40、90、400、900などのいくつかの特別な値を作成します。次に、指定された文字列をスキャンし、テーブルにサブ文字列が存在する場合は、その値を結果を確認し、次の一致を確認します。次の一致については、結果に値が加算され、最終的に数値が形成されます。

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

例(Python)

class Solution(object):
   def romanToInt(self, s):
      """
      :type s: str
      :rtype: int
      """
      roman = {'I':1,'V':5,'X':10,'L':50,'C':100,'D':500,'M':1000,'IV':4,'IX':9,'XL':40,'XC':90,'CD':400,'CM':900}
      i = 0
      num = 0
      while i < len(s):
         if i+1<len(s) and s[i:i+2] in roman:
            num+=roman[s[i:i+2]]
            i+=2
         else:
            #print(i)
            num+=roman[s[i]]
            i+=1
      return num
ob1 = Solution()
print(ob1.romanToInt("III"))
print(ob1.romanToInt("CDXLIII"))

入力

"III"
"CDXLIII"

出力

3
443

  1. Pythonでfloatを整数に変換する方法は?

    Pythonには、floatオブジェクトを整数に変換するのに役立つ組み込み関数int()があります。 >>> a=10.56 >>> int(a) 10

  2. Pythonで整数を文字に変換する方法は?

    Pythonの組み込み関数chr(​​)は、0〜0x10ffffの整数に相当するsunicode文字を返します。 >>> chr(a) 'd' >>> chr(300) 'Ĭ' >>> chr(65) 'A'