码迷,mamicode.com
首页 > 其他好文 > 详细

[LintCode] Integer to Roman

时间:2017-06-23 10:30:51      阅读:109      评论:0      收藏:0      [点我收藏+]

标签:http   within   ret   number   values   cat   and   result   until   

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

标签:http   within   ret   number   values   cat   and   result   until   

原文地址:http://www.cnblogs.com/lz87/p/7067971.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!