这道题的关键是前面的字符所代表的数字大小都是比后一个字符代表的数字大小都要来的大,如果是相反,那么就要把当前的值减去两倍的前一个字符所代表的数字大小作为作为这次索引所获得 的结果值
class Solution {
public:
int romanToInt(string s) {
if(s.length()<1) return 0;
int pre=-1,current;
int num=0;
for(int i=0;i<s.length();i++){
current=getRomanValue(s[i]);
if(pre!=-1&¤t>pre){
num+=(current-pre*2);//这里是关键
}
else{
num+=current;
}
pre=current;
}
return num;
}
public:int getRomanValue(char c) {
switch(c) {
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 1000;
default: return 0;
}
}
};