LeetCode Integer to Roman

class Solution {
private:
    const static char* pattern[];
    const static char* roman_digit[];
public:
    string intToRoman(int num) {
        if (num < 1 || num > 3999) return "";
        string res("");
        int i=0;
        while (num) {
            res = getSingleRomanDigit(num % 10, i++) + res;
            num /= 10;
        }
        return res;
    }

    string getSingleRomanDigit(int digit, int mag) {
        if (digit == 0) return "";
        if (digit > 9 || digit < 1 || mag > 3 || mag < 0) {
            return "FORMAT ERROR";
        }
        string res;
        int pi = 0;
        for (int i=0; (pi = pattern[digit][i]) != '\0'; i++) {
            pi = pi - '0';
            res.push_back(roman_digit[mag][pi]);
        }
        return res;
    }
};
const char* Solution::pattern[] =  {"x", "0", "00", "000", "01", "1", "10", "100", "1000", "02"};
const char* Solution::roman_digit[] = {"IVX", "XLC", "CDM", "M"};

水一发

posted @ 2014-06-12 14:01  卖程序的小歪  阅读(154)  评论(0编辑  收藏  举报