13.罗马数字转整数
Posted frank-hong
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了13.罗马数字转整数相关的知识,希望对你有一定的参考价值。
罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。
字符 数值
I 1
V 5
X 10
L 50
C 100
D 500
M 1000
给定一个罗马数字,将其转换成整数。输入确保在 1 到 3999 的范围内。
示例:
输入: "MCMXCIV"
输出: 1994
解释: M = 1000, CM = 900, XC = 90, IV = 4.
思路:
我们可以发现一条规律:但凡需要用到减法的都是后面的罗马数字大于当前罗马数字,例如IV,IX。
因此遍历原字符串,考虑两种情况:
(1)如果当前罗马数字小于后一位的罗马数字,则减去当前数字(需要用到map)。
(2)其它情况加上当前数字。
最后加上最后一位罗马数字对应的数值。
int romanToInt(string s) {
int res=0;
map<char,int> m={{‘I‘,1},{‘V‘,5},{‘X‘,10},{‘L‘,50},{‘C‘,100},{‘D‘,500},{‘M‘,1000}};
for(int i=0;i<s.size()-1;++i){
if(m[s[i]]<m[s[i+1]]) res-=m[s[i]];
else res+=m[s[i]];
}
res+=m[s[s.size()-1]];
return res;
}
以上是关于13.罗马数字转整数的主要内容,如果未能解决你的问题,请参考以下文章