1. 程式人生 > >13 12羅馬數字和阿拉伯數字互相轉換

13 12羅馬數字和阿拉伯數字互相轉換

一 羅馬數字轉阿拉伯數字
【羅馬數字】
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;

    }
};