[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.
分析:
在上一篇[LeetCode]-Integer to Roman 阿拉伯数字转罗马数字的规律总结接基础上,只需要对字符逐个判断,对4,9,40,90,400,900判断稍复杂一点。
class Solution {
public:
int romanToInt(string s) {
int n=s.length();
int res=0;
for(int i=0;i<n;i++){
switch(s[i]){
case 'M':
res+=1000;break;
case 'D':
res+=500;break;
case 'C':
if(s[i+1]=='M')
res+=900,i++;
else if(s[i+1]=='D')
res+=400,i++;
else
res+=100;
break;
case 'L':
res+=50;break;
case 'X':
if(s[i+1]=='C')
res+=90,i++;
else if(s[i+1]=='L')
res+=40,i++;
else
res+=10;
break;
case 'V':
res+=5;break;
case 'I':
if(s[i+1]=='X')
res+=9,i++;
else if(s[i+1]=='V')
res+=4,i++;
else
res+=1;
break;
}
}
return res;
}
};