首页 > 代码库 > [leetcode]Integer to Roman
[leetcode]Integer to Roman
问题描述:
Given an integer, convert it to a roman numeral.
Input is guaranteed to be within the range from 1 to 3999.
基本思路:
熟悉罗马数字和阿拉伯数字的转换规则,并找出规律。写出程序。 此题重点在提出规律。
阿拉伯数字到罗马数字的映射可以参考http://baike.baidu.com/view/42061.htm?fr=aladdin
代码:
string toRoman(string Roman, int size, int num) //C++ { string tmp = ""; if(num == 0) return tmp; int tmpnum = num; int tmpsize = size; while(tmpsize > 1) { tmpnum = tmpnum/10; tmpsize--; } int topnum = tmpnum; if(tmpnum <4) { while(tmpnum>0) { tmp += Roman.substr((size-1)*2,1); tmpnum--; } } else if(tmpnum > 8) { tmp += Roman.substr((size-1)*2,1); tmp +=Roman.substr((size-1)*2+2,1); } else { if(tmpnum ==4 ) { tmp += Roman.substr((size-1)*2,1); tmp += Roman.substr((size-1)*2+1,1); } else { tmp += Roman.substr((size-1)*2+1,1); tmpnum = tmpnum-5; while(tmpnum>0) { tmp += Roman.substr((size-1)*2,1); tmpnum--; } } } tmpsize =size; while(tmpsize >1) { topnum *= 10; tmpsize--; } tmp += toRoman(Roman,size-1,num-topnum); return tmp; } string intToRoman(int num) { string Roman = "IVXLCDM"; int size = 0; int temp = num; while(temp >0) { size++; temp = temp/10; } string result = toRoman(Roman,size,num); return result; }
[leetcode]Integer to Roman
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。