#Roman to Integer

来源:互联网 发布:plsql导出表结构和数据 编辑:程序博客网 时间:2024/05/18 03:53

Roman to Integer

description:

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

thinking:

1~9: {“I”, “II”, “III”, “IV”, “V”, “VI”, “VII”, “VIII”, “IX”};
10~90: {“X”, “XX”, “XXX”, “XL”, “L”, “LX”, “LXX”, “LXXX”, “XC”};
100~900: {“C”, “CC”, “CCC”, “CD”, “D”, “DC”, “DCC”, “DCCC”, “CM”};
1000~3000: {“M”, “MM”, “MMM”}.

solution:

class Solution {  public:      int romanToInt(string s) {          int ret = toNumber(s[0]);          for (int i = 1; i < s.length(); i++) {              if (toNumber(s[i - 1]) < toNumber(s[i])) {                  ret += toNumber(s[i]) - 2 * toNumber(s[i - 1]);              } else {                  ret += toNumber(s[i]);              }          }          return ret;      }      int toNumber(char ch) {          switch (ch) {              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;          }          return 0;      }  };  
1 0
原创粉丝点击