标签:
Integer to Roman
问题:
Given an integer, convert it to a roman numeral.
Input is guaranteed to be within the range from 1 to 3999.
思路:
映射方法-->等长数组
我的代码:
public class Solution { public String intToRoman(int num) { int[] values = {1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1 }; String[] numerals = {"M", "CM", "D", "CD", "C", "XC", "L", "XL", "X", "IX", "V", "IV", "I" }; StringBuffer rst = new StringBuffer(); int len = values.length; for(int i = 0; i < len; i++) { int count = num/values[i]; num = num % values[i]; for(int j = 0; j < count; j++) { rst.append(numerals[i]); } } return rst.toString(); } }
别人代码:
public class Solution { public String intToRoman(int num) { if(num <= 0) { return ""; } int[] nums = {1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1}; String[] symbols = {"M", "CM", "D", "CD", "C", "XC", "L", "XL", "X", "IX", "V", "IV", "I"}; StringBuilder res = new StringBuilder(); int digit=0; while (num > 0) { int times = num / nums[digit]; num -= nums[digit] * times; for ( ; times > 0; times--) { res.append(symbols[digit]); } digit++; } return res.toString(); } }
学习之处:
标签:
原文地址:http://www.cnblogs.com/sunshisonghit/p/4315906.html