
Problem Description:
Given a roman numeral, convert it to an integer.
Input is guaranteed to be within the range from 1 to 3999.
题目大意:
给定一个罗马数字,1-3999内,求对应的十进制数字
Solutions:
很简单,如果左边的比右边的小,说明左边的需要减去,右边的比左边的小或者相等就累加
Code in C++:
class Solution {
public:
int romanToInt(string s) {
if(s.length()==0) return 0;
if(s.length()==1) return letter2int(s[0]);
int res=letter2int(s[0]);
for(int i=1;i<s.length();i++)
{
if(letter2int(s[i])>letter2int(s[i-1]))
res+=letter2int(s[i])-2*letter2int(s[i-1]);
else res+=letter2int(s[i]);
}
return res;
}
int letter2int(char a)
{
switch(a)
{
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;
}
}
};




近期评论