罗马数字

  罗马数字是最古老的数字表示方式,比阿拉伯数字早2000多年,起源于罗马

  罗马数字有如下符号:

  计数规则:

  1.相同的数字连写,所表示的数等于这些数字相加得到的数,例如:III = 3;

  2.小的数字在大的数字右边,所表示的数等于这些数字相加得到的数,例如:VIII = 8;

  3.小的数字,限于(I、X和C)在大的字数左边,所表示的数等于大数减去小数所得的数,例如:IV = 4;

  4.正常使用时,连续的数字重复不得超过三次;

  5.在一个数的上面画横线,表示这个数扩大1000倍(若只考虑3999以内的数,所以不用考虑这条规则);

  罗马数字转阿拉伯数字规则(仅限于3999以内)

  从前向后遍历罗马数字,如果某个数比前一个小,则加上该数。反之,减去前一个数的两倍然后加上该数。

  这题是Integer转reman,关键点是发现4,9是减法,然后把所有的4,9例子找出来。。。。

时间: 2024-10-09 01:03:49

罗马数字的相关文章

第13题:整数转换成罗马数字&第14题:罗马数字转换成整数

写在前面: 这两道题合起来写吧,其实整数转罗马数字我前天就写完了,当我想写罗马数转整数的时候竟然脑子一片空白,想了几分钟就想起来Map,本着学习的目的最终还是不想用Map,坚持C语言,今天脑子里直接涌出了Switch方式转换,看来"蹲在马桶上编程"的方式还是蛮不错的o(^▽^)o 整数转罗马数字:主要建立对应关系,输出时有点像百钱百鸡 罗马数字转整数:输入罗马数字(其实就是字符数组)后,for循环遍历,找出对应,这个再看不懂的建议去看看罗马数字表示方法. 第13题:整数转换成罗马数字

lintcode 418整数转罗马数字

描述 给定一个整数,将其转换成罗马数字. 返回的结果要求在1-3999的范围内. 说明 https://en.wikipedia.org/wiki/Roman_numerals https://zh.wikipedia.org/wiki/%E7%BD%97%E9%A9%AC%E6%95%B0%E5%AD%97 http://baike.baidu.com/view/42061.htm 样例 思路 while循环拆分调用,用字符串显示最终的罗马数字.代码: class Solution { pub

LeetCode 12 Integer to Roman (整数转罗马数字)

题目链接: https://leetcode.com/problems/integer-to-roman/?tab=Description String M[] = {"", "M", "MM", "MMM”};//1000~3000String C[] = {"", "C", "CC", "CCC", "CD", "D&quo

Roman to Integer——罗马数字转变算法

本文是在学习中的总结,欢迎转载但请注明出处:http://blog.csdn.net/pistolove/article/details/41486885 通过本文你可能学到的知识如下: (1)理解本题的解题思路,在以后类似的场景中,如果没有想到比较好的方法,可以考虑使用本文的方法,虽然效率不是特别高. (2)能够对字符串的截取和HashMap相关操作有所学习. Roman to Integer Given a roman numeral, convert it to an integer. I

罗马数字与阿拉伯数字相互转换

罗马数字规则简明 1. 罗马单个数字共有7个,即I(1).V(5).X(10).L(50).C(100).D(500)和M(1000)2.一个罗马数字重复几次,就表示这个数的几倍.但同一数码不能出现三次以上.3.遵循右加左减的规则.左减的数字有限制,仅限于I.X.C.比如45不可以写成VL,只能是XLV但是,左减时不可跨越一个位数.比如,99不可以用IC(100 - 1)表示,而是用XCIX([100 - 10] + [10 - 1])表示.(等同于阿拉伯数字每位数字分别表示.)左减数字必须为一

13 Roman to Integer(罗马数字转int Easy)

题目意思:罗马数字转int 思路:字符串从最后一位开始读,IV:+5-1 1 class Solution { 2 public: 3 int romanToInt(string s) { 4 map<char,int> mymap; 5 mymap['I']=1; 6 mymap['V']=5; 7 mymap['X']=10; 8 mymap['L']=50; 9 mymap['C']=100; 10 mymap['D']=500; 11 mymap['M']=1000; 12 int a

整数转换成罗马数字

编写一个将整数n(1 <= n <= 9999)转换成罗马数字. 整数n(1<=n<=9999)与罗马数字表示有以下对应关系 1000 - m,有几个1000就有几个m对应 900 - 两个字符cm 500 - 一个字符d 400 - 两个字符cd 100 - 一个字符c,有几个100就用几个c表示 90 - 两个字符xc 50 - 一个字符l 40 - 两个字符xl 10 - 一个字符x,有一个10就用几个x 9 - 用两个字符ix表示 5 - 用一个字符v来表示 4 - 用两个

罗马数字转为阿拉伯数字

1 /* I:1 ; V-5;X-10;L-50;C-100;D-500;M-1000*/ 2 class Solution{ 3 vector<string> tokens; 4 vector<char> token_value; 5 public: 6 /*divide the string into some tokens,every token including same char*/ 7 void token(string s) 8 { 9 string::iterat

罗马数字与整数相互转化

leetcode中的题目 直接上代码: 1 def int2roman(num): 2 ret = "" 3 lists = (1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1) 4 chars = ("M", "CM", "D", "CD", "C", "XC", "L", "XL