标签:
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 }
标签:
原文地址:http://www.cnblogs.com/ghuosaao/p/5482846.html