Integer to Roman

来源:互联网 发布:第八届云计算大会 编辑:程序博客网 时间:2024/05/15 10:26

Given an integer, convert it to a roman numeral.

Input is guaranteed to be within the range from 1 to 3999.

问题来源:https://leetcode.com/problems/integer-to-roman/

class Solution {public:    string intAndRoman(int num) {        switch(num) {            case 1000: return "M";            case 900: return "CM";            case 500: return "D";            case 400: return "CD";            case 100: return "C";            case 90: return "XC";            case 50: return "L";            case 40: return "XL";            case 10: return "X";            case 9: return "IX";            case 5: return "V";            case 4: return "IV";            case 1: return "I";        }    }    string intToRoman(int num) {        string result;        int tmp = 100;        while(tmp && num) {            while(num / (10 * tmp)) {                result += intAndRoman(10 * tmp);                num -= 10 * tmp;            }            if (num / (9 * tmp)) {               result += intAndRoman(9 * tmp);                num -= 9 * tmp;            }            if (num / (5 * tmp)) {                result += intAndRoman(5 * tmp);                num -= 5 * tmp;            }            if (num / (4 * tmp)) {                result += intAndRoman(4 * tmp);                num -= 4 * tmp;            }            tmp /= 10;        }        // 处理循环未能处理的小于4的部分        while(num) {            result += "I";            --num;        }        return result;    }};
0 0
原创粉丝点击