Given an integer, convert it to a roman numeral.
Input is guaranteed to be within the range from 1 to 3999.
Solution:
public class Solution { public String intToRoman(int num) { StringBuilder sb = new StringBuilder(); add(sb, num/1000, ' ', ' ', 'M'); add(sb, (num/100)%10, 'M', 'D', 'C'); add(sb, (num/10)%10, 'C', 'L', 'X'); add(sb, num%10, 'X', 'V', 'I'); return sb.toString(); } public void add(StringBuilder sb, int num, char tenElement, char fiveElement, char oneElement) { if (num>8) { for(int i=10; i>num; i--) sb.append(oneElement); sb.append(tenElement); } else if(num>=5) { sb.append(fiveElement); for(int i=5; i<num; i++) sb.append(oneElement); } else if(num>3) { for(int i=5; i>num; i--) sb.append(oneElement); sb.append(fiveElement); } else { for(int i=0; i<num; i++) sb.append(oneElement); } } }
No comments :
Post a Comment