整数转换成罗马数字,自己写了一个,在LeetCode上提交说超时了,又参考别人的做了修改才好,记下来:
package pratice.leetcode;
import java.util.*;
public class problem12 {
public static String intToRoman(int num) {
if(num<0||num>3999)
return null; //将对应的存在Map中,会影响运行速度,修改后如下:/* String res="";
if(num>=1000){
for(int i=1;i<=num/1000;i++){
res+="M";
}
num=num%1000;
}
if(num>=900){
res+="CM";
num=num-900;
}
if(num>=500){
res+="D";
num=num-500;
}
if(num>=400){
res+="CD");
num=num-400;
}
if(num>=100){
for(int i=1;i<=num/100;i++){
res+="C";
}
num=num%100;
}
if(num>=90){
res+="XC";
num=num-90;
}
if(num>=50){
res+="L";
num=num-50;
}
if(num>=40){
res+="XL";
num=num-40;
}
if(num>=10){
for(int i=1;i<=num/10;i++){
res+="X";
}
num=num%10;
}
if(num==9){
res+="IX";
return res;
}
if(num>=5){
res+="V";
num=num-5;
}
if(num==4){
res+="IV";
return res;
}
if(num>=1){
for(int i=1;i<=num/1;i++){
res+="I";
}
num=num%1;
}
return res;
*/ Map<Integer,String> 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");
String res="";
if(num>=1000){
for(int i=1;i<=num/1000;i++){
res+=map.get(1000);
}
num=num%1000;
}
if(num>=900){
res+=map.get(900);
num=num-900;
}
if(num>=500){
res+=map.get(500);
num=num-500;
}
if(num>=400){
res+=map.get(400);
num=num-400;
}
if(num>=100){
for(int i=1;i<=num/100;i++){
res+=map.get(100);
}
num=num%100;
}
if(num>=90){
res+=map.get(90);
num=num-90;
}
if(num>=50){
res+=map.get(50);
num=num-50;
}
if(num>=40){
res+=map.get(40);
num=num-40;
}
if(num>=10){
for(int i=1;i<=num/10;i++){
res+=map.get(10);
}
num=num%10;
}
if(num==9){
res+=map.get(9);
return res;
}
if(num>=5){
res+=map.get(5);
num=num-5;
}
if(num==4){
res+=map.get(4);
return res;
}
if(num>=1){
for(int i=1;i<=num/1;i++){
res+=map.get(1);
}
num=num%1;
}
return res;
}
public static void main(String[] args){
int num=2;
System.out.println(intToRoman(num));
}
}
本文分享了一种将整数转换为罗马数字的方法,并通过使用哈希映射进行了优化,以提高LeetCode上的代码执行效率。
4938

被折叠的 条评论
为什么被折叠?



