leetcode12. 整数转罗马数字

这篇具有很好参考价值的文章主要介绍了leetcode12. 整数转罗马数字。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

首先这题不需要怎么考虑罗马数字顺序的问题,罗马转整数才需要,因为我模拟出来对照表就行,不涉及加减运算。

那怎么模拟对照表呢?每一个十分位的整数,都是两个字母的组合。那我按区间列出每个十分位的组合就ok。

直接模拟出1-10,10-100,100-1000,1000-3000的罗马字符,
然后每一位的数在哪个区间,我取出来,然后直接相加就ok!

那我是不是就要遍历每一位,并且知道目前是第几位?
首先难点在于我不知道这个数是几位。

我只要知道了这个数是几位,那每一位的数值我都可以取出来,我就可以直接定位C数组。

其实我不需要遍历也不需要知道是几位,我不管是几位,我把这个数都整除一下10*所有位数(因为最大是千位),当整除得到的是0,那意味着这个数没到这么多位或者这一位是0,我不管,当是0时我直接罗马字符加空就行。文章来源地址https://www.toymoban.com/news/detail-585459.html

class Solution:
    def intToRoman(self, num: int) -> str:
        # 直接模拟出1-10,10-100,100-1000,1000-3000
        
        # 一个数整除以(10*n),再对10取余,就得到该数第n位的数。

        # 假如num // 1000,如果为0,则没有千位以上的数,罗马数字加空就行啦。

        # 然后我每一个十位都枚举十个数出来就ok。这里最高位是千位,那就弄一个四维数组。
        roman_list = [
            ["","I","II","III","IV","V","VI","VII","VIII","IX"], # 1-10
            ["","X","XX","XXX","XL","L","LX","LXX","LXXX","XC"], # 10-100
            ["","C","CC","CCC","CD","D","DC","DCC","DCCC","CM"], # 100-1000
            ["","M","MM","MMM"] # 1000-3000
            ]
        res = ""
        res += roman_list[3][num // 1000 % 10]
        res += roman_list[2][num // 100 % 10]
        res += roman_list[1][num // 10 % 10]
        res += roman_list[0][num // 1 % 10]
        return res

到了这里,关于leetcode12. 整数转罗马数字的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Java | Leetcode Java题解之第13题罗马数字转整数

    题目: 题解:

    2024年04月09日
    浏览(43)
  • LeetCode面向运气之Javascript—第13题-罗马数字转整数-99.21%

    给定一个罗马数字,将其转换成整数。 罗马数字包含以下七种字符: I, V, X, L,C,D 和 M 分别代表1,5,10,50,100,500,1000 罗马数字 2 写做 II ,即为两个并列的 1 。12 写做 XII ,即为 X + II 。 27 写做 XXVII, 即为 XX + V + II 。 通常情况下,罗马数字中小的数字在大的数字的右

    2024年02月07日
    浏览(46)
  • 13---罗马数字转整数

    罗马数字包含以下七种字符:  I ,  V ,  X ,  L , C , D  和  M 。 例如, 罗马数字 2 写做  II  ,即为两个并列的 1 。 12 写做  XII  ,即为  X  +  II  。 27 写做   XXVII , 即为  XX  +  V  +  II  。 通常情况下,罗马数字中小的数字在大的数字的右边。但也存在特例,例

    2024年02月12日
    浏览(40)
  • 面试经典150题——罗马数字转整数

    罗马数字包含以下七种字符:  I ,  V ,  X ,  L , C , D  和  M 。 例如, 罗马数字 2 写做  II  ,即为两个并列的 1 。 12 写做  XII  ,即为  X  +  II  。 27 写做   XXVII , 即为  XX  +  V  +  II  。 通常情况下,罗马数字中小的数字在大的数字的右边。但也存在特例,例

    2024年02月12日
    浏览(36)
  • LeeCode前端算法基础100题(17)- 罗马数字转整数

    罗马数字包含以下七种字符:  I ,  V ,  X ,  L , C , D  和  M 。 例如, 罗马数字  2  写做  II  ,即为两个并列的 1 。 12  写做  XII  ,即为  X  +  II  。  27  写做   XXVII , 即为  XX  +  V  +  II  。 通常情况下,罗马数字中小的数字在大的数字的右边。但也存在特

    2024年01月19日
    浏览(51)
  • LeeCode前端算法基础100题(18)整数转罗马数字

    一、问题详情: 罗马数字包含以下七种字符:  I ,  V ,  X ,  L , C , D  和  M 。 例如, 罗马数字 2 写做  II  ,即为两个并列的 1。12 写做  XII  ,即为  X  +  II  。 27 写做   XXVII , 即为  XX  +  V  +  II  。 通常情况下,罗马数字中小的数字在大的数字的右边。但

    2024年01月18日
    浏览(41)
  • 暴力破解(if循环)解决leetcode数字转成罗马数字

    1.题目描述 2.解题思路 刚看到这个题目的时候,感觉说的有点啰嗦,其实不难发现,这个题目和之前的给你多少钱,什么2元,5元的,给你一个数字,让你算各种钱币有多少张。无非就是从小到大进行判断,首先判断给定的数字,能容纳多少个最大的,然后依次减少。 3.代码

    2024年02月19日
    浏览(40)
  • 力扣:罗马转整数

    class 定义了一个类Solution,这个类里面有有私有成员和共有成员 首先定义了一个私有成员,我也不知道为什么需要这个私有成员,unordered_mapunordered_mapchar, int用法再去搜搜。 注意两个头文件不要加h。 代码整体的思路就是定义一个类,这个类首先定义了私有对象一个map的字符到

    2024年02月06日
    浏览(42)
  • 【LeetCode】每日一题&最后一个单词的长度&投票法求解多数元素&异或操作符巧解只出现一次的数字&整数反转

    ========================================================================= 个人主页直达: 小白不是程序媛 LeetCode系列专栏: LeetCode刷题掉发记 ========================================================================= 目录 LeetCode 58.最后一个单词的长度 LeetCode169.多数元素 LeetCode 136.出现一次的数字 LeetCode 7.整数

    2024年02月08日
    浏览(45)
  • leetcode2529-正整数和负整数的最大计数

    题目: 给你一个按 非递减顺序 排列的数组 nums ,返回正整数数目和负整数数目中的最大值。 换句话讲,如果 nums 中正整数的数目是 pos ,而负整数的数目是 neg ,返回 pos 和 neg 二者中的最大值。 注意: 0 既不是正整数也不是负整数。 示例 1: 示例 2: 示例 3: 分析: 这道题

    2024年04月14日
    浏览(32)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包