class Solution {
public String intToRoman(int num) {
String str ="";
Map map=new HashMap();
map.put("1","I");
map.put("4","IV");
map.put("5","V");
map.put("9","IX");
map.put("10","X");
map.put("40","XL");
map.put("50","L");
map.put("90","XC");
map.put("100","C");
map.put("400","CD");
map.put("500","D");
map.put("900","CM");
map.put("1000","M");
while(num!=0){
int n = find(num);
//方法1
str=str+map.get(String.valueOf(n));//int类型转换为String类型
//方法2
//String key=n+"";//int类型转换为String类型
//str=str+map.get(key);
num-=n;
}
return str;
}
public int find(int num){
int[] arr={1,4,5,9,10,40,50,90,100,400,500,900,1000};
int i=0;
//如13;返回10+1+1+1,
//找到小于13的最大数。10。
//小于3的最大数。1。
//小于2的最大数。1。
//最后一次返回等于1的数,1
//对于2000,遍历完也找不到比2000大的数,所以就返回数组最大值1000.
//700=500+100+100
//799=500+90+9
//尽量找大的数
while(i<arr.length){
if(num>arr[i])
i++;
else if(num==arr[i])
return arr[i];
else
return arr[i-1];
}
return arr[i-1];
}
}
#11%
class Solution {
public String intToRoman(int num) {
String str ="";
Map map=new HashMap();
map.put("1","I");
map.put("4","IV");
map.put("5","V");
map.put("9","IX");
map.put("10","X");
map.put("40","XL");
map.put("50","L");
map.put("90","XC");
map.put("100","C");
map.put("400","CD");
map.put("500","D");
map.put("900","CM");
map.put("1000","M");
while(num!=0){
int n = find(num);
//方法1
str=str+map.get(String.valueOf(n));//int类型转换为String类型
//方法2
//String key=n+"";//int类型转换为String类型
//str=str+map.get(key);
num-=n;
}
return str;
}
public int find(int num){
int[] arr={1,4,5,9,10,40,50,90,100,400,500,900,1000};
int i=arr.length-1;
for(int j=i;j>=0;j--){
if(arr[j]>num)
continue;
else//arr[i]<=num 10>13
{
return arr[j];
}
}
return 0;
}
}
#19%
class Solution {
public String intToRoman(int num) {
String str ="";
Map map=new HashMap();
map.put("1","I");
map.put("4","IV");
map.put("5","V");
map.put("9","IX");
map.put("10","X");
map.put("40","XL");
map.put("50","L");
map.put("90","XC");
map.put("100","C");
map.put("400","CD");
map.put("500","D");
map.put("900","CM");
map.put("1000","M");
int[] arr={1,4,5,9,10,40,50,90,100,400,500,900,1000};
int n=0;
while(num!=0){
for(int j=arr.length-1;j>=0;j--){
if(arr[j]>num)
continue;
else//arr[i]<=num 10>13
n=arr[j];
str=str+map.get(String.valueOf(n));//int类型转换为String类型
break;
}
num-=n;
}
return str;
}
}
#50%
class Solution {
public String intToRoman(int num) {
String str ="";
String[] symbols = {"I","IV","V","IX","X","XL","L","XC","C","CD","D","CM","M"};
int[] arr={1,4,5,9,10,40,50,90,100,400,500,900,1000};
int n=0;
while(num!=0){
for(int j=arr.length-1;j>=0;j--){
if(arr[j]>num)
continue;
else//arr[i]<=num 10>13
n=arr[j];
str=str+symbols[j];
break;
}
num-=n;
}
return str;
}
}
#91%
class Solution {
public String intToRoman(int num) {
StringBuilder sb = new StringBuilder();
String[] symbols = {"I","IV","V","IX","X","XL","L","XC","C","CD","D","CM","M"};
int[] arr={1,4,5,9,10,40,50,90,100,400,500,900,1000};
int n=0;
while(num!=0){
for(int j=arr.length-1;j>=0;j--){
if(arr[j]>num)
continue;
else//arr[i]<=num 10>13
n=arr[j];
sb.append(symbols[j]);
break;
}
num-=n;
}
return sb.toString();
}
}
#100%
class Solution {
public String intToRoman(int num) {
StringBuilder sb = new StringBuilder();
String[] symbols = {"I","IV","V","IX","X","XL","L","XC","C","CD","D","CM","M"};
int[] arr={1,4,5,9,10,40,50,90,100,400,500,900,1000};
int n=0;
for(int j=arr.length-1;j>=0;j--){
while(arr[j]<=num){
num-=arr[j];
sb.append(symbols[j]);
}
}
return sb.toString();
}
}