leetcode中Roman to Integer 问题
###Roman to Integer问题描述
Given a roman numeral, convert it to an integer.
Input is guaranteed to be within the range from 1 to 3999.
即要求将罗马数字转化为int类型
java代码
public class Solution {
public int romanToInt(String s) {
int res = 0;
for (int i = s.length() - 1; i >= 0; i--) {
char c = s.charAt(i);
switch (c) {
case 'I':
res += (res >= 5 ? -1 : 1);
break;
case 'V':
res += 5;
break;
case 'X':
res += 10 * (res >= 50 ? -1 : 1);
break;
case 'L':
res += 50;
break;
case 'C':
res += 100 * (res >= 500 ? -1 : 1);
break;
case 'D':
res += 500;
break;
case 'M':
res += 1000;
break;
}
}
return res;
} }
问题分析
在罗马数字中I=1 , V=5 , X=10 , L=50 , C=100 , D=500 , M=1000
重复数次:一个罗马数字重复几次,就表示这个数的几倍
右加左减:
在较大的罗马数字的右边记上较小的罗马数字,表示大数字加小数字
在较大的罗马数字的左边记上较小的罗马数字,表示大数字减小数字