给定一个罗马数字,将其转换成整数
罗马数字有一个map,首先应该建立一个const map表格,将罗马数字的表示和整数联系在一起,而后对输入的罗马数字s进行一个按位的比对。
由于二位的罗马数字优先级更高,想到了&&运算中的短路运算,首先将位数放在前面判断,&&右边放在map中是否会找到这个二位的字符,如果可以找到短路成功,直接在结果上加这个二位的数值,位数向后挪2,如果没有,在结果上加被短路的一位罗马数字,尾数向后挪1,以此类推。
var romanToInt = function(s) {
const map= {I:1,
IV:4,
V:5,
IX:9,
X:10,
XL:40,
L:50,
XC:90,
C:100,
CD:400,
D:500,
CM:900,
M:1000}
var answer=0;
for(var i=0;i<s.length;){
if(i+1 < s.length && map[s.substring(i,i+2)] ){
answer += map[s.substring(i,i+2)];
i+=2;
}else{
answer += map[s.substring(i,i+1)];
i+=1;
}
}
return answer
}