LeetCode——12. Integer to Roman

时光总嘲笑我的痴心妄想 提交于 2020-01-16 07:22:51

一.题目链接:https://leetcode.com/problems/integer-to-roman/

二.题目大意:

  给定一个整数,返回它的罗马数字的形式。

三.题解:

  要想做出这道题目,首先应该弄清楚罗马数字的规律。罗马数字中的任意一个字符连写不会重复出现4次,最多连续出现3次。题目给定的数字范围是1~3999,所以说不用特意去考虑这一点了,按照平常的思路去做就行了。给定一个罗马数字,由于它最多为4位,所以只需拆成个分位、十分位、百分位和千分位即可。对于每个位置的数字对应哪个罗马数字,只要对应起来最后拼成一起即可。代码如下:

class Solution {
public:
    string intToRoman(int num) {
    char* roman[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 romanNum;
    romanNum.append(roman[3][num / 1000 % 10]);//千分位
    romanNum.append(roman[2][num / 100 % 10]);//百分位
    romanNum.append(roman[1][num / 10 % 10]);//十分位
    romanNum.append(roman[0][num % 10]);//个分位
    return romanNum;
    }
};

 本体的关键之处在于罗马数字的各个分位的数字如何表示。

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!