0013. Roman to Integer #
题目 #
-
罗马数字包含七种字符:
I,V,X,L,C,D和M。 -
字符 数值 I1V5X10L50C100D500M1000 -
例如, 罗马数字
2写做II,12写做XII,27写做XXVII。 -
罗马数字中小数字通常位于大数字的右侧,但存在以下六种特例
I可以放在V (5)和X (10)的左边,来表示4和9。X可以放在L (50)和C (100)的左边,来表示40和90。C可以放在D (500)和M (1000)的左边,来表示400和900。
-
给定一个罗马数字,将其转换为整数。
思路 #
模拟 #
代码 #
模拟 #
class Solution {
public int romanToInt(String s) {
int ans = 0;
for (int i = 0; i < s.length(); i++) {
if (s.charAt(i) == 'V') ans += 5;
else if (s.charAt(i) == 'L') ans += 50;
else if (s.charAt(i) == 'D') ans += 500;
else if (s.charAt(i) == 'M') ans += 1000;
else if (s.charAt(i) == 'I') {
if (i + 1 < s.length() && s.charAt(i + 1) == 'V') { ans += 4; i += 1; }
else if (i + 1 < s.length() && s.charAt(i + 1) == 'X') { ans += 9; i += 1; }
else ans += 1;
}
else if (s.charAt(i) == 'X') {
if (i + 1 < s.length() && s.charAt(i + 1) == 'L') { ans += 40; i += 1; }
else if (i + 1 < s.length() && s.charAt(i + 1) == 'C') { ans += 90; i += 1; }
else ans += 10;
}
else if (s.charAt(i) == 'C') {
if (i + 1 < s.length() && s.charAt(i + 1) == 'D') { ans += 400; i += 1; }
else if (i + 1 < s.length() && s.charAt(i + 1) == 'M') { ans += 900; i += 1; }
else ans += 100;
}
}
return ans;
}
}