[LintCode] Integer to Roman
Posted Push your limit!
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[LintCode] Integer to Roman相关的知识,希望对你有一定的参考价值。
Given an integer, convert it to a roman numeral.
The number is guaranteed to be within the range from 1
to 3999
.
4
-> IV
12
-> XII
21
-> XXI
99
-> XCIX
1. Create a mapping between the roman symbols and their integer values.
2. Starting from the biggest symbol, check the number of this symbol needed
to construct the input integer. Add this many symbols to the result string builder if needed.
Subtract the added value from the input integer.
3. Proceed to the next biggest symbol and repeat step 2 until the input integer becomes 0.
1 public class Solution { 2 public String intToRoman(int num) { 3 if(num <= 0) { 4 return ""; 5 } 6 int[] nums = {1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1}; 7 String[] symbols = {"M", "CM", "D", "CD", "C", "XC", "L", "XL", "X", "IX", "V", "IV", "I"}; 8 StringBuilder res = new StringBuilder(); 9 int digit = 0; 10 while (num > 0) { 11 int times = num / nums[digit]; 12 num -= nums[digit] * times; 13 for ( ; times > 0; times--) { 14 res.append(symbols[digit]); 15 } 16 digit++; 17 } 18 return res.toString(); 19 } 20 }
Related Problems
Roman to Integer
Integer to English
以上是关于[LintCode] Integer to Roman的主要内容,如果未能解决你的问题,请参考以下文章