Monday, September 2, 2013

Roman To Integers

Given a roman numeral, convert it to an integer.
Input is guaranteed to be within the range from 1 to 3999.

   int romanToInt(string s) {
    
  map<char, int> st;
  char romans[] =  {'I',  'V', 'X',  'L',   'C',    'D',     'M' };

  int ints[] =    {1,     5,  10,   50,   100,    500,    1000 };
  for(int i  = 0; i < 7; i++)
  {
   st[romans[i]] = ints[i];
  }

  int sum  = 0;
  int i = 7;
  if(s.size() <= 0)
  {
   return 0;
  }
 
  sum = st[s[s.size()-1]];

  for(int j  = s.size() - 2; j >= 0; j--)
  {
   int  x = st[s[j]];     
   if(st[s[j]] < st[s[j+1]])
   {
    sum = sum - x;
   }
   else
   {
       sum = sum + x;
   }
  }

  return sum;
}

No comments:

Post a Comment