前言
【LeetCode 题解】系列传送门: http://www.cnblogs.com/double-win/category/573499.html
1.题目描述
Given an integer, convert it to a roman numeral.
Input is guaranteed to be within the range from 1 to 3999.
2. 思路
给定一个数字,将其转换成罗马数制,输入域1~3999
使用贪心的方法,从高位向低位一次比较.
3. 解法
1 class Solution { 2 public: 3 string intToRoman(int num) { 4 string s[]={"M","CM","D","CD","C","XC","L","XL","X","IX","V","IV","I"}; 5 int n[]={1000,900,500,400,100,90,50,40,10,9,5,4,1}; 6 string ans; 7 int i=0; 8 while(num>0) 9 { 10 if(num>=n[i]) 11 { 12 num-=n[i]; 13 ans+= s[i]; 14 } 15 else 16 i++; 17 } 18 return ans; 19 } 20 };
4. 相关题目
相对应的一道题:Roman to Interger : http://www.cnblogs.com/double-win/p/3760002.html
作者:Double_Win 出处: http://www.cnblogs.com/double-win/p/3761803.html 声明: 由于本人水平有限,文章在表述和代码方面如有不妥之处,欢迎批评指正~ |