Given a roman numeral, convert it to an integer.
Input is guaranteed to be within the range from 1 to 3999.
解析:1、M=1000 D=500 C=100 L=50 X=10 V=5 I=1
2、若小的罗马符号出现在大的罗马符号的前面,则小的罗马符号代表的数字改为负。这种情况只能出现有限的情况。
public class Solution {
public int romanToInt(String s) {
char com = 'a';
int flag = 0;
int res = 0;
for(int i=s.length()-1;i>=0;i--){
com = s.charAt(i);
switch (com) {
case 'I':
if(flag >= 1){
res -= 1;
}else{
res += 1;
}
flag = 0;
break;
case 'V':
res += 5;
flag = 1;
break;
case 'X':
if(flag >= 3){
res -= 10;
}else{
res += 10;
}
flag = 2;
break;
case 'L':
res += 50;
flag = 3;
break;
case 'C':
if(flag >= 5){
res -= 100;
}else{
res += 100;
}
flag = 4;
break;
case 'D':
res += 500;
flag = 5;
break;
case 'M':
res += 1000;
flag = 6;
break;
default:
break;
}
}
return res;
}
}
这个方法是看的别人哒,觉得不错