13 12罗马数字和阿拉伯数字互相转换

来源:互联网 发布:mac os 10.12.5百度云 编辑:程序博客网 时间:2024/06/05 02:05

一 罗马数字转阿拉伯数字
【罗马数字】
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”}.
程序:

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;      }  };  

二 整型数转化为罗马数字

class Solution {public:    string intToRoman(int num) {        string roman[4][10] = {              {"", "I", "II", "III", "IV", "V", "VI", "VII", "VIII", "IX"},              {"", "X", "XX", "XXX", "XL", "L", "LX", "LXX", "LXXX", "XC"},              {"", "C", "CC", "CCC", "CD", "D", "DC", "DCC", "DCCC", "CM"},              {"", "M", "MM", "MMM"}          };         string result="";        int wei=0;        while(num!=0)        {            int aa=num%10;            result=roman[wei][aa]+result;            wei++;            num=num/10;        }        return result;    }};