罗马数字

13.罗马数字转整数

房东的猫 提交于 2019-12-28 04:50:16
题目: 罗马数字包含以下七种字符: I , V , X , L , C , D 和 M 。 字符 数值 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 到 3999 的范围内。 示例 1: 输入: "III" 输出: 3 示例 2: 输入: "IV" 输出: 4 示例 3: 输入: "IX" 输出: 9 示例 4: 输入: "LVIII" 输出: 58 解释: L = 50, V= 5, III = 3. 示例 5: 输入: "MCMXCIV"

Leetcode第12题 整数转罗马数字

大兔子大兔子 提交于 2019-12-24 08:31:02
题目: 罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。 字符 数值 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 到 3999 的范围内。 示例 1: 输入: 3 输出: "III" 示例 2: 输入: 4 输出: "IV" 示例 3: 输入: 9 输出: "IX" 示例 4: 输入: 58 输出: "LVIII" 解释: L = 50, V = 5, III = 3. 示例 5: 输入: 1994 输出: "MCMXCIV" 解释:

[leetcode]13. 罗马数字转整数

孤街醉人 提交于 2019-12-23 05:39:54
题目:[leetcode]13. 罗马数字转整数 罗马数字和整数转换 /* 作者: rentingsong * 思路: * 1、使用map映射罗马数字对应的整数值 * 2、使用for循环,从字符串s的第一个字符开始,和右相邻的字符进行与逻辑判断, * 如果符合特殊情况,按特殊情况处理,并使i加1,这样子是为了跳过下一个字符,因为计算过了嘛; * 如果不符合特殊情况,直接加上这个字符对应的整数。 * 3、有一个难处理的是,当i=s.length()-1时,如果再和下一位比较,会出现越位,所以让i < s.length() - 1, * 来处理不越位的情况,最后一位单独处理。处理方法是设置一个标志位flag, * 如果flag=0,表示最后两位是特殊情况,直接返回结果res; * 如果flag=1,表示最后两位是正常情况,需要加上最后一位,然后返回结果res。 */ # include <iostream> # include <map> using namespace std ; class Solution { public : int romanToInt ( string s ) { // 字符映射整数 map < char , int > letterToInt ; letterToInt [ 'I' ] = 1 ; letterToInt [ 'V' ] = 5 ;

罗马数字转换

南楼画角 提交于 2019-12-23 04:19:15
将大于0小于1000的阿拉伯数字转换为罗马数字。 表示个位数: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 输入格式: 输入一个整数n。 输出格式: 输出一个由n转换过来的罗马数字。 输入样例: 在这里给出一组输入。例如: 1 12 123 1 2 3 输出样例: 在这里给出相应的输出。例如: I XII CXXIII 1 2 3 代码如下,要注意的就是三位数的十位数为0的时候怎么读 #include #include using namespace std; int main() { string a[10]={"",“I”,“II”,“III”,“IV”,“V”,“VI”,“VII”,“VIII”,“IX”}; string b[10]={"",“X”,“XX”,“XXX”,“XL”,“L”,“LX”,“LXX”,“LXXX”,“XC”}; string c[10]={"",“C”,“CC”,“CCC”,“CD”,“D”,“DC”,“DCC”,“DCCC”,“CM”}; int x,y,z; int n; while(scanf("%d",&n) != EOF) { x = n % 10; y = n / 10 % 10; z

题12、 整数转罗马数字

不羁的心 提交于 2019-12-13 11:12:45
题12、 整数转罗马数字 题目 思路 代码 题目 罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。 字符 数值 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 到 3999 的范围内。 思路 简单粗暴,直接从最大到最小以此迭代,最后得到输出值。 需要注意的就是对于4 9 49 90等等的处理。 代码 public class T012 { public static void main(String[] args) { // TODO

leetcode 12.整数转罗马数字

社会主义新天地 提交于 2019-12-10 10:45:48
leetcode 12.整数转罗马数字 题目描述 罗马数字包含以下七种字符: I , V , X , L , C , D 和 M 。 字符 数值 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 到 3999 的范围内。 示例 1: 输入: 3 输出: "III" 示例 2: 输入: 4 输出: "IV" 示例 3: 输入: 9 输出: "IX" 示例 4: 输入: 58 输出: "LVIII" 解释: L = 50, V = 5, III = 3. 示例 5

题13、罗马数字转整数

左心房为你撑大大i 提交于 2019-12-10 07:52:42
题13、罗马数字转整数 题目 思路 想法 题目 罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。 字符 数值 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 到 3999 的范围内。 思路 本来想试试用map表速度会不会更快,结果可能是因为map表初始化的原因,时间空间上反而比不上直接去判断那种。等有空再去优化吧。 想法 import java.util.HashMap; public class T013 { public static

【leetcode】13. 罗马数字转整数(roman-to-integer)(模拟)

让人想犯罪 __ 提交于 2019-12-09 23:29:32
链接 https://leetcode-cn.com/problems/roman-to-integer/ 题意 给定一个罗马数字,将其转换成整数。 罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。 字符 数值 I 1 V 5 X 10 L 50 C 100 D 500 M 1000 通常情况下,罗马数字中小的数字在大的数字的右边。但也存在特例,例如 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。 思路 遍历罗马数字字符串,每次检查 当前字符对应的数值 是否 大于 之前一个字符对应的数值 ,如果大于则 结果 减去 2 2 2 倍的 之前一个字符对应的数值 。并且每次遍历 结果 加上 当前字符对应的数值 。 AC代码 class Solution { public : int romanToInt ( string s ) { map < char , int > mp = { { 'I

罗马数字转整数(简单)

。_饼干妹妹 提交于 2019-12-09 18:28:44
来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/roman-to-integer 罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。 字符 数值 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 到 3999 的范围内。 示例 1: 输入: “III” 输出: 3 示例 2: 输入: “IV” 输出: 4 示例 3: 输入: “IX” 输出: 9 示例 4: 输入: “LVIII” 输出

Leetcode_13【罗马数字转整数】

不羁的心 提交于 2019-12-08 23:06:02
文章目录: 题目 脚本一及注释   未加注释脚本 脚本一逻辑 题目: 罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。 字符 数值 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 到 3999 的范围内。 示例 1: 输入: "III" 输出: 3 示例 2: 输入: "IV" 输出: 4 示例 3: 输入: "IX" 输出: 9 示例 4: 输入: "LVIII" 输出: 58 解释: L =