Given a roman numeral, convert it to an integer.
Input is guaranteed to be within the range from 1 to 3999.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | class Solution {public: inline int map(const char c) { switch (c) { case ‘I‘: return 1; case ‘V‘: return 5; case ‘X‘: return 10; case ‘L‘: return 50; case ‘C‘: return 100; case ‘D‘: return 500; case ‘M‘: return 1000; default: return 0; }} int romanToInt(string s) { int len = s.size(); if(len == 0) return 0; int result = 0; for (int i = 0; i < len; ++i){ if(i > 0 && map(s[i]) > map(s[i - 1])){ result += map(s[i]) - 2 * map(s[i - 1]); } else{ result += map(s[i]); } } return result; }}; |
原文:http://www.cnblogs.com/zhxshseu/p/906af788e77ab7a5f1bb757a71dd18a2.html