首页 > 其他分享 >力扣12 数字转为罗马数字

力扣12 数字转为罗马数字

时间:2022-12-07 01:44:06浏览次数:50  
标签:12 数字 千位 力扣 String 罗马数字 num 十百

力扣12 数字转为罗马数字

题目:

罗马数字包含以下七种字符: 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

解题思路:

暂时没有想到什么好的解题思路,我们可以将个十百千位上的数值分别用罗马数字表示出来分别存储在四个数组中,然后求出所给数字的个十百千位上的数字,以所求出的数字分别在所对应的数组中取出对应的罗马数字然后进行拼接。

代码:

/**
 * 将一个整数转换为罗马数字要求整数范围在[1,3999]。
 * 我们可以分别用罗马数字将数字的个十百千位上的数值表示出来分别存储在不同的数组中,然后再分别求出数字的个十百千位上的数字分别在不同的数组中取值再相加。
 */
public class IntToLuoMa {
    public static void main(String[] args) {
        int num = 4;
        System.out.println("intToRuoMa(num) = " + intToRuoMa(num));
    }
    //1.定义一个方法返回一个整数的罗马数字,返回值类型位String参数类型位int
    public static String intToRuoMa(int num){
        //2.分别定义四个数组用罗马数字存储个十百千位上的数值
        String thousands[] = {"","M","MM","MMM"};
        String hundreds[] = {"","C","CC","CCC","CD","D","DC","DCC","DCCC","CM"};
        String tens[] = {"","X","XX","XXX","XL","L","LX","LXX","LXXX","XC"};
        String ones[] = {"","I","II","III","IV","VI","VII","VIII","IX"};
        //3.分别求出所给数字的个十百千位
        //3.1千位
        int thousand = num / 1000;
        //3.2百位
        int hundred = num % 1000 /100;
        //3.3十位
        int ten = num % 100 / 10;
        //3.4个位
        int one = num % 10;
        //4.拼接个十百千位
        return thousands[thousand]+hundreds[hundred]+tens[ten]+ones[one];
    }
}

标签:12,数字,千位,力扣,String,罗马数字,num,十百
From: https://www.cnblogs.com/ygstudy/p/16961943.html

相关文章

  • 力扣 leetcode 797. 所有可能的路径
    问题描述给你一个有n个节点的有向无环图(DAG),请你找出所有从节点0到节点n-1的路径并输出(不要求按特定顺序)graph[i]是一个从节点i可以访问的所有节点的列表(即从节......
  • CSS——如何使网页字体小于12px
    前言有时候可能遇到UI设计的网页字体大小小于12px,针对这种字体大小我们如何设置呢?text-size-adjust:https://developer.mozilla.org/en-US/docs/Web/CSS/text-size-adju......
  • 力扣 leetcode 130. 被围绕的区域
    问题描述给你一个m*n的矩阵board,由若干字符'X'和'O',找到所有被'X'围绕的区域,并将这些区域里所有的'O'用'X'填充。提示:m==board.lengthn==board[i......
  • 12月做题记录
    whk自闭,尤其是英语和化学。会按自己的感觉,按照NOIP2020难度打分。一.gym100212I(T2)题意:给你一个二分图,你要保留一些边使得每个点度数\(\geq2\),要让保留的边最少......
  • 12.6(P)类的使用
    安装第三方包:  速度太慢时:  类的定义与使用: 注:在类中函数和变量有其自己的称谓   定义方法:  注:在方法体内调用变量时必须要通过self访......
  • 【221206-1】已知:ab都是正整数,且1/a+1/b=1/5. 求:a+b=?
    ......
  • 54个CSS重难点整理,12-24篇,进阶高薪必需要掌握的知识点
    本次我把CSS中的重难点整理出来,总共54个核心知识点,供大家复习,希望能帮到大家。这些重难点是进阶高薪必需要掌握的知识点,同时也是面试必问的内容。 因为涉及的内容较多......
  • 20221206_每日学习记录
    20221206今天看了刘永鑫写的ImageGP包的代码和网站,感觉做的不错.代码是使用bash调用R的,可以学习一下,下面的操作地址是这里usage(){.....#......
  • [Typescript] 129. Hard - Capitalize Nest Object Keys
    Capitalizethekeyoftheobject,andifthevalueisanarray,iteratethroughtheobjectsinthearray. /*_____________YourCodeHere_____________*/......
  • 【2022-12-06】爬虫从入门到入狱(三)
    1bs4搜索文档树frombs4importBeautifulSouphtml_doc="""<html><head><title>TheDormouse'sstory</title></head><body><pid="myp"class="title">asdfasdf......