Skip to content

Instantly share code, notes, and snippets.

@aire-con-gas
Created November 25, 2018 14:34
Show Gist options
  • Save aire-con-gas/1617034f1fcc08ecd5272a74169b9d95 to your computer and use it in GitHub Desktop.
Save aire-con-gas/1617034f1fcc08ecd5272a74169b9d95 to your computer and use it in GitHub Desktop.
/**
* @param {string} s
* @return {number}
*/
var romanToInt = function(s) {
// make a map of chars
var romanNumMap = {
'I': 1,
'V': 5,
'X': 10,
'L': 50,
'C': 100,
'D': 500,
'M': 1000
};
var checkpoints = [
'IV', 'IX', 'XL', 'XC', 'CD', 'CM'
];
// convert s to array of chars
var charArr = s.split('');
var result = 0;
var checkblock;
var currVal;
// for each char have two pointers
// if curr char and next char then convert curr char to curr char * -1
// add value to result
for(var i = 0, j = 1, il = charArr.length; i < il; i++, j++) {
currVal = romanNumMap[charArr[i]];
if (j < il) {
checkblock = charArr[i] + charArr[j];
if (checkpoints.indexOf(checkblock) !== -1) {
currVal = currVal * -1;
}
}
result += currVal;
}
// return result
return result;
};
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment