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

12. Integer to Roman

时间:2016-05-11 19:39:25      阅读:159      评论:0      收藏:0      [点我收藏+]

标签:

Given an integer, convert it to a roman numeral.

Input is guaranteed to be within the range from 1 to 3999.

代码如下:

 1 public class Solution {
 2     public String intToRoman(int num) {
 3         int n=0;
 4         int[] nums={1000,500,100,50,10,5,1};
 5         Map<Integer,String> map=new HashMap<>();
 6         map.put(1,"I");
 7         map.put(10,"X");
 8         map.put(100,"C");
 9         map.put(1000,"M");
10         map.put(5,"V");
11         map.put(50,"L");
12         map.put(500,"D");
13         String s="";
14         if(map.containsKey(num))
15         return map.get(num);
16 
17       for(int i=0;i<nums.length-1;i++)
18         {
19             if(num>=nums[i])
20             {
21                 n=num/nums[i];
22 
23                  if(n>=1&&n<=4){
24                      if(n==4)
25                      {
26                          if(s.length()!=0&&s.substring(s.length()-1,s.length()).equals(nums[i-1]))
27                          {
28                              s=s.substring(0,s.length()-1);
29                              s=s+map.get(nums[i]);
30                              
31                              if(nums[i]==10||nums[i]==100)
32                              s=s+map.get(nums[i-2]);
33                          }else{
34                              s=s+map.get(nums[i]);
35                              if(nums[i]==10||nums[i]==100)
36                               s=s+map.get(nums[i-1]);
37                          }
38                      }
39                      else{
40                          while(n>0)
41                           {s=s+map.get(nums[i]);n--;}
42                      }
43                      num=num%nums[i];
44                  }
45             }
46         }
47         n=num/nums[nums.length-1];
48          if(n>=1&&n<=4){
49              if(n==4)
50              {s=s+map.get(nums[nums.length-1])+map.get(nums[nums.length-2]);}
51              else{
52                  while(n>0)
53                  {s=s+map.get(nums[nums.length-1]);n--;}
54          }
55              }
56          s=s.replace("VIV","IX");
57          s=s.replace("LXL","XC");
58          s=s.replace("DCD","CM");
59         return s;
60     }
61 }

 

12. Integer to Roman

标签:

原文地址:http://www.cnblogs.com/ghuosaao/p/5482846.html

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