Leetcode_12 [ローマ数字の整数]

記事のディレクトリ:

  • タイトル
  • スクリプトとノート
  • スクリプトロジック

トピック:

次の7つを含むローマ数字文字:I、V、X、L、C、D及びM.

数字
I. 1
V. 5
X-10
L 50
C 100
D 500
M 1000は
、例えば、2 IIローマ数字として書き込まれ、すなわち1.12、すなわちX + II、二つの平行XIIのように書きます。図27は、XXVII、即ちXX + V + IIのように書きます。

一般的に、大量に右にローマ数字の数が少ないです。しかし、例外もある、例えば、4 IIIIを書きますが、IVはありません。左番号5番号1において、多数の数が4を得た少ない数5で表される値に等しいです。同様に、数9は、IXで表されます。この特別なルールは以下の6つのケースにのみ適用されます。

私は、左V(5)とX(10)上にあってもよく、及び4,9を表現します。
X Lは、左(50)及びC(100)上に配置することができ、そして40と90が示されています。 
Cは、400と900表すために、左側にD(500)とM(1000)上に配置することができます。
整数を考えると、ローマ数字に変換します。入力は3999から1の範囲にあることを保証します。

例1:

入力:3
出力: "III"
例2:

入力:4
出力: "IV"
の例3:

入力:9
出力: "IX"
例4:

入力:58
出力: "LVIII"
説明:L = 50、V = 5 、III = 3
実施例5:

入力:1994
出力: "MCMXCIV"
説明:M = 1000、CM = 900 、XC = 90、IV = 4。


そして、スクリプト注: [使用:48ms]

クラスソリューション:
     DEF intToRoman(セルフ、NUM:INT) - > STR:タイトル#を出力し、出力、入力された整数を定義し、NUMという名前の変数は文字列変数の出力
        NUM1の%=モジュロnum個の#1000の値を
        COUNT1は = INT(NUM / 1000 )#番号1000を含む入力値を取得
        NUM2 = NUM1%100#値次いでモジュロ
        COUNT2 = INT(NUM1 / 100 )私は番号を含む取る後#取得値100 
        NUM3 = NUM2%10次いでモジュロ値#
        COUNT3 = INT(NUM2 / 10 )#取得取ら値より数よりも含まれる10 
        のList1 = [ ' M '' MM ''MMM ' ]#定義リスト
        LIST2 = [ ' C ' ' CC ' ' CCC ' ' CD ' ' D ' ' DC ' ' DCC ' ' DCCC ' ' CM ' ]#定義リスト
        LIST3 = [ ' X- '' XX '' XXX '"XL ' ' L ' ' LX ' ' LXX ' ' LXXX ' ' XC ' ]#定義リスト
        list4 = [ ' I ' ' II ' ' III ' ' IV ' ' V ' ' VL ' ' VII ' 'VIII ' 'IX " ]定義リスト#の
        STR = "" #は空の文字列を定義し
        たIFカウント1 =である!が0:#1000を分析する文がゼロであるかどうかを決定するに進み、数がゼロである含まれてい
            STR。= + STRのList1は[COUNT1がある- 1 ] #変数の値、空の文字列を加えた要素のリスト 
         がiF!COUNT2 = 0:もしゼロ#100は数が決定含まれているが、意思決定の文に進み、ゼロである
            STR = + STR LIST2 [ - 1 COUNT2 ] #変数の値、要素のリストを含む文字列
         IF COUNT3 =!0:#前掲
            STR = + STR LIST3 [COUNT3 - 1 ]#前掲
         IF!NUM3 = 0:#1上掲
            STR = + STR list4 [NUM3 -1]#同上の
         リターン(STR)決意が完了した後#、文字列変数を返します
クラスソリューション:
     DEF intToRoman(自己、NUM:INT) - > STR:
        NUM1 = NUM%千
        COUNT1 = INT(NUM / 1000 
        NUM2 = NUM1%100 
        COUNT2 = INT(NUM1 / 100 
        NUM3 = NUM2%10 
        COUNT3 = INT (NUM2 / 10 
        LIST1 = [ ' M '' MM '' MMM ' ] 
        LIST2 = ' C '' CC '' CCC '' CD '' D '' DC '' DCC '' DCCC '' CM ' ] 
        LIST3 = [ ' X '' XX '' XXX '' XL '' L ' ' LX ' '70 " ;' 80 '' 90 ' ] 
        list4 = ' 1 '' 2 '' 3 '' 4 '' 5 '' 6 '' 7 '' 8 '' 9 ' ] 
        STR = ' 「
        もし!COUNT1 = 0;
            STR = STR + LIST1 [COUNT1 - 1]
         もし COUNT2 =!0:
            STR = STR + LIST2 [COUNT2 - 1 ]
         の場合 COUNT3 =!0:
            STR = STR + LIST3 [COUNT3 - 1 ]
         の場合 NUM3 =!0:
            STR = STR + list4 [NUM3 -1 ]
         リターン(STR)
コメントのないコード

スクリプトロジック:

  • まず:この範囲は、質問入力された数字であることが知られています
  • 第二:この変換は、実際には、それは16進数に対応するローマ数字のリストに固定することができるように、固定されている特定の値、各バンド対応の値、例えば、1,2,3の数十、ローマ数字は-4,5,6,7,8,9- 'X'、 'XX'、 'XXX'、 'XL'、 'L'、 'LX'、 'LXX'、 'LXXX'、「XCに対応します"
  • 第三:ちょうど各進数の値を取得し、リスト内の特定の要素に変換解くことができます

 

 

おすすめ

転載: www.cnblogs.com/mailong/p/12008439.html