Given an integer, convert it to a roman numeral.
Input is guaranteed to be within the range from 1 to 3999.
1 public class Solution { 2 public String intToRoman(int num) { 3 String romans[][] = new String[][]{ 4 {"", "I", "II", "III", "IV", "V", "VI", "VII", "VIII", "IX"}, 5 {"", "X", "XX", "XXX", "XL", "L", "LX", "LXX", "LXXX", "XC"}, 6 {"", "C", "CC", "CCC", "CD", "D", "DC", "DCC", "DCCC", "CM"}, 7 {"", "M", "MM", "MMM",} 8 }; 9 String result = ""; 10 int index = 0; 11 while(num != 0){ 12 String temp = romans[index][num % 10]; 13 result = temp + result; 14 index++; 15 num = num / 10; 16 }//while 17 18 return result; 19 } 20 }
下面是使用的贪心算法,每次减去最大的
1 public class Solution { 2 public String intToRoman(int num) { 3 int array_int[] = new int[]{1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1}; 4 String array_string[] = new String[]{"M", "CM", "D", "CD", "C", "XC", "L", "XL", "X", "IX", "V", "IV", "I"}; 5 6 StringBuffer sb = new StringBuffer(); 7 for(int i = 0; i < array_int.length; i++){ 8 while(num >= array_int[i]){ 9 num -= array_int[i]; 10 sb.append(array_string[i]); 11 }//while 12 }//for 13 14 return sb.toString(); 15 } 16 }