一、问题描述
Given an integer, convert it to a roman numeral. Input is guaranteed to be within the range from 1 to 3999.
二、解题思路
将1-3999之内的任一数字转化成罗马字符形式。罗马数字共有7个,即Ⅰ(1)、Ⅴ(5)、Ⅹ(10)、Ⅼ(50)、Ⅽ(100)、Ⅾ(500)和Ⅿ(1000)。本文的解题思路是,用一个String数组来存储个位、十位、百位和千位的罗马表示形式,然后将要操作的阿拉伯数字的个位、十位、百位、千位分别做对应。
罗马数字表达的相关规则https://zh.wikipedia.org/wiki/%E7%BD%97%E9%A9%AC%E6%95%B0%E5%AD%97
三、源代码
public class Solution {
public String intToRoman(int num) {
// String[] thousand_string={"","M","MM","MMM"};
//String[] hundred_string={"","C","CC","CCC","CD","D","DC","DCC","DCCC","CM"};
//String[] ten_string={"","X","XX","XXX","XL","L","LX","LXX","LXXX","XC"};
//String[] num_string={"","I","II","III","IV","V","VI","VII","VIII","IX"};
String[][] arrays={{"","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="";
int index=0;
while(num>0){
result=arrays[index][num%10]+result;
num/=10;
index++;
}
return result;
// int num_int=num%10;
//int ten_int=(num-num_int)%10;
//int hundred_int=(num-num_int-ten_int*10)%100;
//int thousand_int=(num-num_int-ten_int*10-hundred_int*100)%1000;
//return thousand_string[thousand_int]+hundred_string[hundred_int]+ten_string[ten_int]+num_string[num_int];
}
}