【LeetCode】C# 12、Integer to Roman
2017-10-08 08:57
295 查看
Given an integer, convert it to a roman numeral.
Input is guaranteed to be within the range from 1 to 3999.
把给定的整数转化为罗马数字。
罗马数字的符号一共只有7个:I(代表1)、V(代表5)、X(代表10)、L(代表50)、C代表100)、D(代表500)、M(代表1,000).这7个符号位置上不论怎样变化,它所代表的数字都是不变的.它们按照下列规律组合起来,就能表示任何数。
下面是别人的算法,事先建立一个储存个十百千位的表后,按罗马数字排列规律写出某一位的循环即可。
原博:http://www.cnblogs.com/etcow/archive/2012/09/13/2684057.html
或者把罗马数字中的表达形式罗列出来,然后将num从大到小分别与其对应,很简洁。
http://blog.csdn.net/beiyeqingteng/article/details/8547565
Input is guaranteed to be within the range from 1 to 3999.
把给定的整数转化为罗马数字。
罗马数字的符号一共只有7个:I(代表1)、V(代表5)、X(代表10)、L(代表50)、C代表100)、D(代表500)、M(代表1,000).这7个符号位置上不论怎样变化,它所代表的数字都是不变的.它们按照下列规律组合起来,就能表示任何数。
下面是别人的算法,事先建立一个储存个十百千位的表后,按罗马数字排列规律写出某一位的循环即可。
原博:http://www.cnblogs.com/etcow/archive/2012/09/13/2684057.html
public class Solution { public string IntToRoman(int num) { string res = ""; int[] arr = new int[4]; for(int i = 0;i<4;i++){ arr[i] = num % (int)Math.Pow(10, i + 1) / (int)Math.Pow(10, i); } for(int i = 3;i >= 0;i--){ if (arr[i] != 0) { if (i == 3) res += D1000[arr[i] - 1]; if (i == 2) res += D100[arr[i] - 1]; if (i == 1) res += D10[arr[i] - 1]; if (i == 0) res += D1[arr[i] - 1]; } } return res; } static string[] D1 = {"I", "II", "III", "IV", "V", "VI", "VII", "VIII", "IX"}; static string[] D10 = { "X", "XX", "XXX", "XL", "L", "LX", "LXX", "LXXX", "XC" }; static string[] D100 = { "C", "CC", "CCC", "CD", "D", "DC", "DCC", "DCCC", "CM" }; static string[] D1000 = { "M", "MM", "MMM" }; }
或者把罗马数字中的表达形式罗列出来,然后将num从大到小分别与其对应,很简洁。
http://blog.csdn.net/beiyeqingteng/article/details/8547565
int[] val = {1000,900,500,400,100,90,50,40,10,9,5,4,1}; String[] strs = {"M","CM","D","CD","C","XC","L","XL","X","IX","V","IV","I"}; StringBuilder sb = new StringBuilder(); for(int i=0;i<val.Length;i++) { while(num >= val[i]) { num -= val[i]; sb.Append(strs[i]); } } return sb.ToString();
相关文章推荐
- LeetCode12~14 Integer to Roman/Roman to Integer/Longest Common Prefix
- 04-08 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(string,数学问题)
- LeetCode 12 Integer to Roman
- 【leetcode】12. Integer to Roman
- [LeetCode][12]Integer to Roman解析 int转罗马字符时间复杂度为常数的实现-Java实现
- LeetCode 12. Integer to Roman
- 【LEETCODE】12-Integer to Roman
- LeetCode 12. Integer to Roman(阿拉伯转罗马数字)
- [leetcode: Python]12. Integer to Roman
- [LeetCode]12.Integer to Roman
- LeetCode 12 — Integer to Roman(C++ Java Python)
- leetcode-java-12. Integer to Roman
- leetcode 12 Integer to Roman(整型数转换为罗马数字)
- LeetCode 12 integer to roman
- [LeetCode 12] Integer to Roman
- leetcode 12 ,13 Integer to Roman &&Roman to Integer 罗马与阿拉伯数组转换