首页
学习
活动
专区
圈层
工具
发布

整数转罗马数字

通常情况下,罗马数字中小的数字在大的数字的右边。但也存在特例,例如 4 不写做 IIII,而是 IV。数字 1 在数字 5 的左边,所表示的数等于大数 5 减小数 1 得到的数值 4 。...给你一个整数,将其转为罗马数字。...前言 罗马数字符号 罗马数字由 7 个不同的单字母符号组成,每个符号对应一个具体的数值。此外,减法规则(如问题描述中所述)给出了额外的 6个复合符号。...罗马数字的唯一表示法 让我们从一个例子入手。考虑 140的罗马数字表示,下面哪一个是正确的? 我们用来确定罗马数字的规则是:对于罗马数字从左到右的每一位,选择尽可能大的符号值。...方法一:模拟 思路 根据罗马数字的唯一表示法,为了表示一个给定的整数 num,我们寻找不超过 num的最大符号值,将 num减去该符号值,然后继续寻找不超过 num的最大符号值,将该符号拼接在上一个找到的符号之后

1.2K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    罗马数字转整数

    通常情况下,罗马数字中小的数字在大的数字的右边。但也存在特例,例如 4 不写做 IIII,而是 IV。数字 1 在数字 5 的左边,所表示的数等于大数 5 减小数 1 得到的数值 4 。...给定一个罗马数字,将其转换成整数。输入确保在 1 到 3999 的范围内。...关于罗马数字的详尽书写规则,可以参考 罗马数字 - Mathematics。 初始思路 这是我刚拿到这道题的思路,首先将所有可能组成得值写为一个转化方法。...之后将给定的罗马数字字符串转化成数组,进行一次循环,用一个对象存储循环出的罗马数字的值、和罗马数字对应的整数的值,以及一个布尔值(用于表示这个值是否会与下一个值形成一个新的值)。...若无新值则于总数相加,若有可能组成新值则将值暂存,在判断下一个值。

    2.2K21

    罗马数字转整数

    通常情况下,罗马数字中小的数字在大的数字的右边。但也存在特例,例如 4 不写做 IIII,而是 IV。数字 1 在数字 5 的左边,所表示的数等于大数 5 减小数 1 得到的数值 4 。...给定一个罗马数字,将其转换成整数。...提示: 1 <= s.length <= 15 s 仅含字符 ('I', 'V', 'X', 'L', 'C', 'D', 'M') 题目数据保证 s 是一个有效的罗马数字,且表示整数在范围 [1, 3999...关于罗马数字的详尽书写规则,可以参考 罗马数字 - Mathematics 。 通常情况下,罗马数字中小的数字在大的数字的右边。...若存在小的数字在大的数字的左边的情况,根据规则需要减去小的数字。对于这种情况,我们也可以将每个字符视作一个单独的值,若一个数字右侧的数字比它大,则将该数字的符号取反。 例如 可视作 。

    90920

    罗马数字转整数(java)

    二、题目描述: 题目:给定一个罗马数字,将其转换成整数。 罗马数字包含以下七种字符: ​​I​​​, ​​V​​​, ​​X​​​, ​​L​​​,​​C​​​,​​D​​​ 和 ​​M​​。...通常情况下,罗马数字中小的数字在大的数字的右边。但也存在特例,例如 4 不写做 IIII,而是 IV。...所以总结下来的规律就是,如果罗马数字中小的数字在大的数字的右边,若该字符串满足该情况,那么可以将每个字符视作一个单独的值,累加每个字符对应的数值即可。 ...若罗马数字中存在小的数字在大的数字的左边的情况,则需减去这小的数字。对于这种情况,我们也可以将每个字符视作一个单独的值,若一个数字右侧的数字比它本身大,则直接减去该数即可。  ...,然后通过遍历获取每一个罗马数字所对应的map值,二是考虑罗马数字右边是否比自己大,比自己大就相加,比自己小就相减,把握住这个规律即可轻松解题。

    32020

    Python | 罗马数字转整数

    问题描述 罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。...通常情况下,罗马数字中小的数字在大的数字的右边。但也存在特例,例如 4 不写做 IIII,而是 IV。数字 1 在数字 5 的左边,所表示的数等于大数 5 减小数 1 得到的数值 4 。...给定一个罗马数字,将其转换成整数。输入确保在 1 到 3999 的范围内 解决方案 建立一个字典key为罗马字符,value为对应的数值,ans则为数值之和。...遍历a时是从第二个元素开始的,因为第一个元素前没有其他元素;遍历时进行运算的值都是第i-1个元素所对应的值,而最终遍历到的是第i个元素,所以最后在输出时要加上最后一个元素所对应的数值。...a = input("输入一个罗马数字:") ans = 0 dict1 = {"I": 1, "V": 5, "X": 10, "L": 50, "C": 100, "D": 500, "M":

    1.7K50

    【leetcode】13:罗马数字转整数

    通常情况下,罗马数字中小的数字在大的数字的右边。但也存在特例,例如 4 不写做 IIII,而是 IV。数字 1 在数字 5 的左边,所表示的数等于大数 5 减小数 1 得到的数值 4 。...给定一罗马数字,将其转为整数。输入确保在 1 到 3999 的范围内。...解答 这道题还昨天那道可以说是差不多一样的,昨天是整数转罗马,今天是罗马转整数,没看过的或许可以看下:【leetcode】12:整数转罗马数字 我们把这些字符一个一个判断就可以了,例如遇到 V 就加 5...不过在判断的是时候,我们要优先 V 在判断 IV。...s.charAt(i) == 'I') { num += 1; i++; } return num; } 昨天那道整数转罗马数字的简化版的代码我给弄错了

    76840

    leetcode-罗马数字转整数

    通常情况下,罗马数字中小的数字在大的数字的右边。但也存在特例,例如 4 不写做 IIII,而是 IV。数字 1 在数字 5 的左边,所表示的数等于大数 5 减小数 1 得到的数值 4 。...给定一个罗马数字,将其转换成整数。输入确保在 1 到 3999 的范围内。...关于罗马数字的详尽书写规则,可以参考 罗马数字 - Mathematics 。...出处 链接:https://leetcode-cn.com/problems/roman-to-integer 思路 首先明确一下题意,输入一串字符串,输出一个整数。...我们自然而然会想到创建一个罗马数字和数字的关系映射,在这里我们可以创建一个对象,根据键值对来解答,也可以试试 Map 来建立他们之间的关系,然后由题意可以知道,存在一些特例,大的数字在小的后面,所以我们顺藤摸瓜地想到了

    84720

    LeetCode【12】-- 整数转罗马数字

    通常情况下,罗马数字中小的数字在大的数字的右边。但也存在特例,例如 4 不写做 IIII,而是 IV。数字 1 在数字 5 的左边,所表示的数等于大数 5 减小数 1 得到的数值 4 。...给你一个整数,将其转为罗马数字。...思路以及解答 其实上面的罗马数字表示法里面,表示的时候并非用的乘法,而是加法,比如1000是M,2000则是MM,那么表示的组合一共下面的列表: M:1000 CM: 900 D: 500 CD: 400...代码实现,Java代码如下: class Solution { public String intToRoman(int num) { StringBuffer sb = new...个人写作方向:Java源码解析,JDBC,Mybatis,Spring,Redis,分布式,剑指Offer,LeetCode等,认真写好每一篇文章,不喜欢标题党,不喜欢花里胡哨,大多写系列文章,不能保证我写的都完全正确

    30420
    领券