整数转罗马数字-LintCode

来源:互联网 发布:软考初级程序员真题 编辑:程序博客网 时间:2024/05/05 08:33

给定一个整数,将其转换成罗马数字。
返回的结果要求在1-3999的范围内。

说明:
什么是 罗马数字?

https://en.wikipedia.org/wiki/Roman_numerals
https://zh.wikipedia.org/wiki/%E7%BD%97%E9%A9%AC%E6%95%B0%E5%AD%97
http://baike.baidu.com/view/42061.htm

样例:
4 -> IV
12 -> XII
21 -> XXI
99 -> XCIX

更多案例,请戳 http://literacy.kent.edu/Minigrants/Cinci/romanchart.htm

这里写图片描述

#ifndef C418_H#define C418_H#include<iostream>#include<string>#include<vector>using namespace std;class Solution {public:    /*    * @param n: The integer    * @return: Roman representation    */    string intToRoman(int n) {        // write your code here        if (n < 0)            return NULL;        vector<vector<string>> table{            {"","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 str;        str += table[3][n / 1000 % 10];        str += table[2][n / 100 % 10];        str += table[1][n / 10 % 10];        str += table[0][n % 10];        return str;    }};#endif