您的位置:首页 > 其它

[leetcode]12. Integer to Roman

2016-10-15 18:13 232 查看
Given an integer, convert it to a roman numeral.

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

这道题基本没什么算法上的难点,就是需要知道罗马字母和整数的对应关系就行了。

1~9: {"I", "II", "III", "IV", "V", "VI", "VII", "VIII", "IX"};
10~90: {"X", "XX", "XXX", "XL", "L", "LX", "LXX", "LXXX", "XC"};
100~900: {"C", "CC", "CCC", "CD", "D", "DC", "DCC", "DCCC", "CM"};
1000~3000: {"M", "MM", "MMM"}.

java代码

public class Solution {
// 1~9: {"I", "II", "III", "IV", "V", "VI", "VII", "VIII", "IX"};

// 10~90: {"X", "XX", "XXX", "XL", "L", "LX", "LXX", "LXXX", "XC"};

// 100~900: {"C", "CC", "CCC", "CD", "D", "DC", "DCC", "DCCC", "CM"};

// 1000~3000: {"M", "MM", "MMM"}.
public String intToRoman(int num) {
String[][] keyArray = {{"I", "II", "III", "IV", "V", "VI", "VII", "VIII", "IX"},{"X", "XX", "XXX", "XL", "L", "LX", "LXX", "LXXX", "XC"},{"C", "CC", "CCC", "CD", "D", "DC", "DCC", "DCCC", "CM"},{"M", "MM", "MMM"}};
String result = "";
while(num>0){
if(num>=1000){
result+=keyArray[3][num/1000-1];
num-=(num/1000)*1000;
}else if(num>=100){
result+=keyArray[2][num/100-1];
num-=(num/100)*100;
}else if(num>=10){
result+=keyArray[1][num/10-1];
num-=(num/10)*10;
}else{
result+=keyArray[0][num-1];
num-=num;
}

}
return result;
}
}

go代码

func intToRoman(num int) string {
var keyArray [][]string = [][]string{{"I", "II", "III", "IV", "V", "VI", "VII", "VIII", "IX"},{"X", "XX", "XXX", "XL", "L", "LX", "LXX", "LXXX", "XC"},{"C", "CC", "CCC", "CD", "D", "DC", "DCC", "DCCC", "CM"},{"M", "MM", "MMM"}};
var result string = "";
for{
if num==0{
break;
}
if num>=1000{
result+=keyArray[3][num/1000-1];
num-=(num/1000)*1000;
}else if num>=100{
result+=keyArray[2][num/100-1];
num-=(num/100)*100;
}else if num>=10{
result+=keyArray[1][num/10-1];
num-=(num/10)*10;
}else{
result+=keyArray[0][num-1];
num-=num;
}
}
return result;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: