Question Thirteen - Roman To Integer

Given a roman numeral, convert it to an integer.

Input is guaranteed to be within the range from 1 to 3999.

Solution

/**
 * @param {string} s
 * @return {number}
 */
var romanToInt = function(s) {
    var result = 0;
    var i;
    for(i = s.length - 1; i >= 0; i--){
      if(s[i] === 'I'){
        result += 1;
      }else if(s[i] === 'V'){
        if(s[i - 1] === 'I'){
          result += 4;
          i--;
        }else{
          result += 5;
        }
      }else if(s[i] === 'X'){
        if(s[i - 1] === 'I'){
          result += 9;
          i--;
        }else{
          result += 10;
        }
      }else if(s[i] === 'L'){
        if(s[i - 1] === 'X'){
          result += 40;
          i--;
        }else{
          result += 50;
        }
      }else if(s[i] === 'C'){
        if(s[i - 1] === 'X'){
          result += 90;
          i--;
        }else{
          result += 100;
        }
      }else if(s[i] === 'D'){
        if(s[i - 1] === 'C'){
          result += 400;
          i--;
        }else{
          result += 500;
        }
      }else if(s[i] === 'M'){
        if(s[i - 1] === 'C'){
          result += 900;
          i--;
        }else{
          result += 1000;
        }
      }
    }

    return result;
};

Discussion

results matching ""

    No results matching ""