13. 罗马数字转整数 Roman to Integer
Roman numerals are represented by seven different symbols: I
, V
, X
, L
, C
, D
and M
.
For example, 2
is written as II
in Roman numeral, just two one's added together. 12
is written as XII
, which is simply X + II
. The number 27
is written as XXVII
, which is XX + V + II
.
Roman numerals are usually written largest to smallest from left to right. However, the numeral for four is not IIII
. Instead, the number four is written as IV
. Because the one is before the five we subtract it making four. The same principle applies to the number nine, which is written as IX
. There are six instances where subtraction is used:
I
can be placed beforeV
(5) andX
(10) to make 4 and 9.X
can be placed beforeL
(50) andC
(100) to make 40 and 90.C
can be placed beforeD
(500) andM
(1000) to make 400 and 900.
Given a roman numeral, convert it to an integer.
public int romanToInt(String s) { char [] str = s.toCharArray(); int n = s.length(); int ans = 0; for (int i = 0; i < n; i++){ switch (str[i]){ case 'M' : ans += 1000;break; case 'D' : ans += 500; break; case 'C' : if( i + 1 < n && (str[i + 1] == 'M' || str[i + 1] == 'D') ){ ans -= 100; }else{ ans += 100; } break; case 'L' : ans += 50; break; case 'X' : if(i + 1 < n && (str[i + 1] == 'C' || str[i + 1] =='L')){ ans -= 10; }else{ ans += 10; } break; case 'V' : ans += 5; break; case 'I' : if( i + 1 < n && (str[i + 1] == 'V' || str[i + 1] == 'X')){ ans -= 1; }else{ ans += 1; } break; } } return ans; }
参考链接:
https://leetcode.com/problems/roman-to-integer/
https://leetcode-cn.com/problems/roman-to-integer/