/* 第二种是递归的方法,思路都是就是从大到小判断拆分,从前向后添加罗马数字 递归提交的时候出现超时现象 关键是理解罗马数字的组成方式,有几个临界点需要额外提取,其他的重复添加即可 可以百度以下罗马数字的组成方式。 */public String intToRoman(int num) { String str = ""; String [] symbol = {"M","CM","D","CD","C","XC","L","XL","X","IX","V","IV","I"}; int [] value = {1000,900,500,400, 100, 90, 50, 40, 10, 9, 5, 4, 1}; for(int i=0;i<13;i++){ while(num >= value[i]){ num -= value[i]; str += symbol[i]; } } return str; } public String intToRoman2(int num){ if(num>=1000) return "M"+intToRoman(num-1000); if(num>=900) return "CM"+intToRoman(num-900); if(num>=500) return "D"+intToRoman(num-500); if(num>=400) return "CD"+intToRoman(num-400); if(num>=100) return "C"+intToRoman(num-100); if(num>=90) return "XC"+intToRoman(num-90); if(num>=50) return "L"+intToRoman(num-50); if(num>=40) return "XL"+intToRoman(num-40); if(num>=10) return "X"+intToRoman(num-10); if(num>=9) return "IX"+intToRoman(num-9); if(num>=5) return "V"+intToRoman(num-5); if(num>=4) return "IV"+intToRoman(num-4); if(num>=1) return "I"+intToRoman(num-1); return ""; }
12. Integer to Roman
最新推荐文章于 2024-01-03 14:56:38 发布