13. 羅馬數字轉整數 Roman to Integer
阿新 • • 發佈:2020-11-30
Roman numerals are represented by seven different symbols:I
,V
,X
,L
,C
,D
andM
.
For example,2
is written asII
in Roman numeral, just two one's added together.12
is written asXII
, which is simplyX + II
. The number27
is written asXXVII
, which isXX + V + II
.
Roman numerals are usually written largest to smallest from left to right. However, the numeral for four is notIIII
IV
. Because the one is before the five we subtract it making four. The same principle applies to the number nine, which is written asIX
. 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
C
(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/