首页 > 其他分享 >[LeetCode]012-整数转罗马数字

[LeetCode]012-整数转罗马数字

时间:2022-12-23 20:56:47浏览次数:72  
标签:示例 012 IV 罗马数字 num 1000 LeetCode 50

>>> 传送门

题目

罗马数字包含以下七种字符: IVXLCDM

字符          数值
I             1
V             5
X             10
L             50
C             100
D             500
M             1000

例如, 罗马数字
2 写做 II ,即为两个并列的 1。
12 写做 XII ,即为 X + II 。
27 写做  XXVII, 即为 XX + V + II 。
通常情况下,罗马数字中小的数字在大的数字的右边。但也存在特例,例如
4 不写做 IIII,而是 IV
数字 1 在数字 5 的左边,所表示的数等于大数 5 减小数 1 得到的数值 4 。
同样地,数字 9 表示为 IX

这个特殊的规则只适用于以下六种情况:

  • I 可以放在 V (5) 和 X (10) 的左边,来表示 4 和 9。
  • X 可以放在 L (50) 和 C (100) 的左边,来表示 40 和 90。
  • C 可以放在 D (500) 和 M (1000) 的左边,来表示 400 和 900。

给你一个整数,将其转为罗马数字。

示例

示例1

输入: num = 3
输出: "III"

示例2

输入: num = 4
输出: "IV"

示例3

输入: num = 9
输出: "IX"

示例4

输入: num = 58
输出: "LVIII"
解释: L = 50, V = 5, III = 3.

示例5

输入: num = 1994
输出: "MCMXCIV"
解释: M = 1000, CM = 900, XC = 90, IV = 4.

提示

  • 1 <= num <= 3999

题解

class Solution {
public:
    string intToRoman(int num) {
        int values[] = {
            1000,
            900, 500, 400, 100,
            90, 50, 40, 10,
            9, 5, 4, 1
        };        
        string reps[] = {
            "M",
            "CM", "D", "CD", "C",
            "XC", "L", "XL", "X",
            "IX", "V", "IV", "I"
        };

        string res;
        for (int i = 0; i < values.size(); i ++ ) {
            while (values[i] <= num) {
                num -= values[i];
                res += reps[i];
            }
        }
        return res;
    }
};

标签:示例,012,IV,罗马数字,num,1000,LeetCode,50
From: https://www.cnblogs.com/yuyork/p/17001605.html

相关文章

  • #yyds干货盘点# LeetCode程序员面试金典:检查平衡性
    题目:实现一个函数,检查二叉树是否平衡。在这个问题中,平衡树的定义如下:任意一个节点,其两棵子树的高度差不超过1。示例1:给定二叉树[3,9,20,null,null,15,7]  3 /\......
  • LeetCode刷题第七周
    455、分发饼干classSolution{publicintcount;publicintfindContentChildren(int[]g,int[]s){Arrays.sort(g);Arrays.sort(s);......
  • leetcode-11. 盛最多水的容器
    ​​11.盛最多水的容器​​难度中等3977收藏分享切换为英文接收动态反馈给定一个长度为​​n​​的整数数组​​height​​。有​​n​​条垂线,第​​i​​条线的......
  • 寄语自己-2012
    2012年新年即到,谨写此文自勉:睡早点,多休息,不透支体能;少喝点,多喝水,不藐视养生;吃好点,多运动,不远离健康。豁达点,多宽容,不自寻烦恼;坚强点,多微笑,不牵手脆弱;踏实点,多务实,......
  • leetcode-回文数
    9.回文数给你一个整数x,如果x是一个回文整数,返回true;否则,返回false。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。例如,121是回文,而123不是。示例1......
  • [LeetCode]011-盛最多水的容器
    >>>传送门题目给定一个长度为n的整数数组 height 。有 n 条垂线,第i条线的两个端点是 (i,0) 和 (i,height[i]) 。找出其中的两条线,使得它们与 x 轴共同......
  • leetcode笔记——单调栈
    在leetcode中,使用单调栈的题大多是寻找下一个更大的数类似,我感觉其他变形问题还是挺难搞的实际处理时候可能还是先暴力,再想着怎么通过单调栈去优化吧列一下今天遇到的三......
  • #yyds干货盘点# LeetCode程序员面试金典:特定深度节点链表
    题目:给定一棵二叉树,设计一个算法,创建含有某一深度上所有节点的链表(比如,若一棵树的深度为D,则会创建出D个链表)。返回一个包含所有深度的链表的数组。 示例:输入:[1,2,3,4,5,......
  • [leetcode]第 6 天 搜索与回溯算法(简单)
    32-I.从上到下打印二叉树思路没有思路。。看题解要求二叉树从上至下打印,叫做二叉树的广度优先搜索(BFS)。BFS通常借助队列的先入先出特性实现。算法流程:1.特例处理......
  • leetcode.cn165
    最近刷leetcode.cn,碰到这题。题目很水,没啥说的,主要是写法的问题。因为leetcode.cn蛋疼的输入输出通过参数给出,不方便用cin。以前遇到这种题我一般会用java,写法很简单,spli......