12. Integer to Roman
2017-08-24 20:52
232 查看
Given an integer, convert it to a roman numeral.
Input is guaranteed to be within the range from 1 to 3999.
给定一个整数,将它转换成一个罗马数字。
输入是保证在范围从1到3999。
罗马数字转换成整数:
首先要来了解一下罗马数字表示法,基本字符有7个:I,V,X,L,C,D,M,分别表示1,5,10,50,100,500,1000。
在构成数字的时候,有下列规则:
1、相同的数字连写,所表示的数等于这些数字相加得到的数,如:Ⅲ = 3;
2、小的数字在大的数字的右边,所表示的数等于这些数字相加得到的数, 如:Ⅷ = 8;Ⅻ = 12;
3、小的数字,(限于Ⅰ、X 和C)在大的数字的左边,所表示的数等于大数减小数得到的数,如:Ⅳ= 4;Ⅸ= 9;
5、正常使用时,连写的数字重复不得超过三次。
代码:
参考:
1. 罗马数字和整数相互转换
Input is guaranteed to be within the range from 1 to 3999.
给定一个整数,将它转换成一个罗马数字。
输入是保证在范围从1到3999。
罗马数字转换成整数:
首先要来了解一下罗马数字表示法,基本字符有7个:I,V,X,L,C,D,M,分别表示1,5,10,50,100,500,1000。
在构成数字的时候,有下列规则:
1、相同的数字连写,所表示的数等于这些数字相加得到的数,如:Ⅲ = 3;
2、小的数字在大的数字的右边,所表示的数等于这些数字相加得到的数, 如:Ⅷ = 8;Ⅻ = 12;
3、小的数字,(限于Ⅰ、X 和C)在大的数字的左边,所表示的数等于大数减小数得到的数,如:Ⅳ= 4;Ⅸ= 9;
5、正常使用时,连写的数字重复不得超过三次。
代码:
string intToRoman(int num) { int base[] = { 1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1 }; string str[] = { "M", "CM", "D", "CD", "C", "XC", "L", "XL", "X", "IX", "V", "IV", "I" }; string roman = ""; int number = num; int i = 0; while (number > 0) { cout << "i:" <<i<< endl; cout << "string: " << roman << endl; if (number >= base[i]) { number -= base[i]; roman += str[i]; } else i++; } return roman; }
参考:
1. 罗马数字和整数相互转换
相关文章推荐
- 12. Integer to Roman
- LeetCode 12 -Integer to Roman ( JAVA )
- LeetCode *** 12. Integer to Roman
- leetcode 12 Integer to Roman
- DAY6:leetcode #12 Integer to Roman
- LeetCoder 12. Integer to Roman
- LeetCode题解(12)--Integer to Roman
- leetcode 12. Integer to Roman
- 个人记录-LeetCode 12. Integer to Roman
- leetcode 12. Integer to Roman
- [Leetcode]_12 Integer to Roman
- leetcode12 Integer to Roman
- leetcode-12 Integer to Roman
- [leetcode] 12. Integer to Roman
- [LeetCode][12]Integer to Roman解析 int转罗马字符时间复杂度为常数的实现-Java实现
- LeetCode 12 Integer to Roman
- LeetCodeOJ刷题之12【Integer to Roman】
- [LeetCode] 12. Integer to Roman
- LeetCode 12. Integer to Roman
- LeetCode 12:"Integer to Roman"