Not Only Algorithm,不仅仅是算法,关注数学、算法、数据结构、程序员笔试面试以及一切涉及计算机编程之美的内容 。。
你的位置:NoAlGo博客 » 题解 » 

Leetcode Integer to Roman

Leetcode algorithms 第 12 题:Integer to Roman。

题目

Given an integer, convert it to a roman numeral.

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

解答

整数到罗马数字转换,罗马数字里小数字出现在大数字左边时使用减法,出现在右边则使用加法,这里直接把所有的表示存到一张表里,然后直接转换。

罗马数字里主要也是1(I)和5(V)、10(X)和50(L)、100(C)和500(D)等概念,可以类似于10进制,按10进制的每位数字进行相应转换。具体参考如下代码:

class Solution {
public:
    string intToRoman(int num) {
        const char *s[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 ans;
        for (int i = 0; num != 0; i++)
            ans = s[i][num % 10] + ans, num /= 10 ;
        return ans;
    }
};
上一篇: 下一篇:

我的博客

NoAlGo头像编程这件小事牵扯到太多的知识,很容易知其然而不知其所以然,但真正了不起的程序员对自己程序的每一个字节都了如指掌,要立足基础理论,努力提升自我的专业修养。

站内搜索

最新评论