Given a roman numeral, convert it to an integer.
The answer is guaranteed to be within the range from 1 to 3999.
分析:罗马计数法一般都是大小递减。特例只有:IV, IX, XL, XC, CD, CM这几种情况。
这里 遇到递增的情况,特殊处理。
public class Solution {
/**
* @param s Roman representation
* @return an integer
*/
public int romanToInt(String s) {
if(s.length() == 0) return 0;
int res = toNum(s.charAt(0));
for(int i = 1; i < s.length(); i++) {
if(getNum(s.charAt(i)) > getNum(s.charAt(i - 1))) {
res += getNum(s.charAt(i)) - 2 * getNum(s.charAt(i - 1));
} else {
res += getNum(s.charAt(i));
}
}
return res;
}
int toNum(char ch) {
switch (ch) {
case 'I' : return 1;
case 'V' : return 5;
case 'X' : return 10;
case 'L' : return 50;
case 'C' : return 100;
case 'D' : return 500;
case 'M' : return return 1000;
}
}
}