LeetCode 12. Integer to Roman

来源:互联网 发布:windows phone8.1刷机 编辑:程序博客网 时间:2024/06/01 10:20

题目描述

Given an integer, convert it to a roman numeral.
Input is guaranteed to be within the range from 1 to 3999.

题目解析

将阿拉伯数字转换为罗马数字。
罗马数字表示方法:
I-1,X-10,C-100,M-1000;
V-5,L-50,D-500;
1. 相同的数字连写、所表示的数等于这些数字相加得到的数、如:Ⅲ=3;
2. 小的数字在大的数字的右边、所表示的数等于这些数字相加得到的数、 如:Ⅷ=8、Ⅻ=12;
3. 小的数字、(限于 Ⅰ、X 和 C)在大的数字的左边、所表示的数等于大数减小数得到的数、如:Ⅳ=4、Ⅸ=9;
4. 正常使用时、连写的数字重复不得超过三次;
5. 在一个数的上面画一条横线、表示这个数扩大 1000 倍。

所以可以将罗马数字也视为十进制数。

代码

class Solution {public:    string intToRoman(int num) {        vector<vector<string> >dig = {            {"","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 roman;        roman.append(dig[3][num/1000%10]);        roman.append(dig[2][num/100%10]);        roman.append(dig[1][num/10%10]);        roman.append(dig[0][num%10]);        return roman;    }};
0 0
原创粉丝点击