首页 > 代码库 > 13. Roman to Integer

13. Roman to Integer

题目

Given a roman numeral, convert it to an integer.

Input is guaranteed to be within the range from 1 to 3999.


分析

罗马数字字符串转化成整数

 

罗马数字

采用七个罗马字母作数字、即Ⅰ(1)、X(10)、C(100)、M(1000)、V(5)、L(50)、D(500)。

有两条须注意掌握:
  1. 基本数字 Ⅰ、X 、C 中的任何一个,自身连用构成数目,或者放在大数的右边采用相加的方式构成数目,都不能超过三个;放在大数的左边采用相减的方式构成数目,只能用一个
  2. 基本数字 V 、L 、D 中的任何一个,放在大数的右边采用相加的方式构成数目、只能使用一个不能放在大数的左边采用相减的方式构成数目

举例:

个位数
Ⅰ-1、Ⅱ-2、Ⅲ-3、Ⅳ-4、Ⅴ-5、Ⅵ-6、Ⅶ-7、Ⅷ-8、Ⅸ-9
十位数
X-10、Ⅺ-11、Ⅻ-12、XIII-13、XIV-14、XV-15、XVI-16、XVII-17、XVIII-18、XIX-19、XX-20、XXI-21、XXII-22、XXIX-29、XXX-30、XXXIV-34、XXXV-35、XXXIX-39、XL-40、L-50、LI-51、LV-55、LX-60、LXV-65、LXXX-80、XC-90、XCIII-93、XCV-95、XCVIII-98、XCIX-99
百位数
C-100、CC-200、CCC-300、CD-400、D-500、DC-600、DCC-700、DCCC-800、CM-900、CMXCIX-999
千位数
M-1000、MC-1100、MCD-1400、MD-1500、MDC-1600、MDCLXVI-1666、MDCCCLXXXVIII-1888、MDCCCXCIX-1899、MCM-1900、MCMLXXVI-1976、MCMLXXXIV-1984、MCMXC-1990、MM-2000、MMMCMXCIX-3999

 

千位:M-1000、MM-2000、MMM-3000

百位:C-100、CC-200、CCC-300、CD-400、D-500、DC-600、DCC-700、DCCC-800、CM-900

十位:X-10、XX-20、XXX-30、XL-40、L-50、LX-60、LXX-70、LXXX-80、XC-90

个位:I-1、II-2、III-3、IV-4、V-5、VI-6、VII-7、VIII-8、IX-9


解答

解法1:(我)(15ms ×)

13. Roman to Integer