[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.

Example

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的主要内容,如果未能解决你的问题,请参考以下文章

[LintCode] Integer to Roman

[LintCode] Roman to Integer

Lintcode54 String to Integer II solution 题解

lintcode-easy-Reverse Integer

LintCode 463 Sort Integer

LintCode 数组