Description
Given a roman numeral, convert it to an integer.
Input is guaranteed to be within the range from 1 to 3999.
Solution
这个题只要知道转换规则,遍历一遍字符串就行。
class Solution {
public:
int romanToInt(string s) {
int res=toNumber(s[0]);
for (int i=1;i<s.size();i++)
{
if(toNumber(s[i])>toNumber(s[i-1])){
res+=toNumber(s[i])-2*toNumber(s[i-1]);
}
else
{
res+=toNumber(s[i]);
}
}
return res;
}
int toNumber(char ch){
switch(ch){
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;
}
}
};