码迷,mamicode.com
首页 > 编程语言 > 详细

[LeetCode] 012. Integer to Roman (Medium) (C++/Java/Python)

时间:2015-03-02 23:57:24      阅读:298      评论:0      收藏:0      [点我收藏+]

标签:c++   java   leetcode   python   算法   

索引:[LeetCode] Leetcode 题解索引 (C++/Java/Python/Sql)
Github: https://github.com/illuz/leetcode


012.Integer_to_Roman (Medium)

链接

题目:https://oj.leetcode.com/problems/integer-to-roman/
代码(github):https://github.com/illuz/leetcode

题意

把十进制转为罗马数。

分析

模拟即可。

“罗马数字的基本符号有I(表示十进制数1),V(表示5),X(表示10),L(表示50),C(表示100),D(表示500),M(表示1000)。” – 罗马数制(百度百科)

代码

C++:

class Solution {
private:
	int val[13] = {
		1000, 900, 500, 400,
		100, 90, 50, 40,
		10, 9, 5, 4,
		1
	};
	string syb[13] = {
		"M", "CM", "D", "CD",
		"C", "XC", "L", "XL",
		"X", "IX", "V", "IV",
		"I"
	};
public:
	string intToRoman(int num) {
		string roman;
		int i = 0, k;
		while (num > 0) {
			k = num / val[i];
			while (k--) {
				roman += syb[i];
				num -= val[i];
			}
			i++;
		}
		return roman;
	}
};


Java:

public class Solution {
    private int[] val = {
            1000, 900, 500, 400,
            100, 90, 50, 40,
            10, 9, 5, 4,
            1
    };
    private String[] syb = new String[] {
            "M", "CM", "D", "CD",
            "C", "XC", "L", "XL",
            "X", "IX", "V", "IV",
            "I"
    };


    public String intToRoman(int num) {
        StringBuilder roman = new StringBuilder();
        int i = 0, k;
        while (num > 0) {
            k = num / val[i];
            while (k-- > 0) {
                roman.append(syb[i]);
                num -= val[i];
            }
            i++;
        }
        return roman.toString();
    }
}


Python:

class Solution:
    # @return a string
    def intToRoman(self, num):
        val = [
            1000, 900, 500, 400,
            100, 90, 50, 40,
            10, 9, 5, 4,
            1
            ]
        syb = [
            "M", "CM", "D", "CD",
            "C", "XC", "L", "XL",
            "X", "IX", "V", "IV",
            "I"
            ]
        roman = ''
        i = 0
        while  num > 0:
            for _ in range(num // val[i]):
                roman += syb[i]
                num -= val[i]
            i += 1
        return roman


[LeetCode] 012. Integer to Roman (Medium) (C++/Java/Python)

标签:c++   java   leetcode   python   算法   

原文地址:http://blog.csdn.net/hcbbt/article/details/44026099

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!