Given an integer, convert it to a roman numeral.
Input is guaranteed to be within the range from 1 to 3999.
代码如下:
public class Solution {
public String intToRoman(int num) {
int n=0;
int[] nums={1000,500,100,50,10,5,1};
Map<Integer,String> map=new HashMap<>();
map.put(1,"I");
map.put(10,"X");
map.put(100,"C");
map.put(1000,"M");
map.put(5,"V");
map.put(50,"L");
map.put(500,"D");
String s="";
if(map.containsKey(num))
return map.get(num); for(int i=0;i<nums.length-1;i++)
{
if(num>=nums[i])
{
n=num/nums[i]; if(n>=1&&n<=4){
if(n==4)
{
if(s.length()!=0&&s.substring(s.length()-1,s.length()).equals(nums[i-1]))
{
s=s.substring(0,s.length()-1);
s=s+map.get(nums[i]); if(nums[i]==10||nums[i]==100)
s=s+map.get(nums[i-2]);
}else{
s=s+map.get(nums[i]);
if(nums[i]==10||nums[i]==100)
s=s+map.get(nums[i-1]);
}
}
else{
while(n>0)
{s=s+map.get(nums[i]);n--;}
}
num=num%nums[i];
}
}
}
n=num/nums[nums.length-1];
if(n>=1&&n<=4){
if(n==4)
{s=s+map.get(nums[nums.length-1])+map.get(nums[nums.length-2]);}
else{
while(n>0)
{s=s+map.get(nums[nums.length-1]);n--;}
}
}
s=s.replace("VIV","IX");
s=s.replace("LXL","XC");
s=s.replace("DCD","CM");
return s;
}
}