Integer to Roman

主要思想:
将罗马数字的范围分块,其中,最左部分可分为13个点。

对于目标数字,看它在哪个范围内,则它可以拆分为左边节点对应的字符串+(数字-左边界值)的对应罗马字符的组合。

用一个递归算法来实现即可。

 1 class Solution {
 2 public:
 3     string intToRoman(int num) {
 4         if(num==0)
 5         {
 6             return "";
 7         }
 8         int nums[13]={1,4,5,9,10,40,50,90,100,400,500,900,1000};
 9         string strs[13]={"I","IV","V","IX","X","XL","L","XC","C","CD","D","CM","M"};
10         string res="";
11         for(int i=12;i>=0;i--)
12         {
13             if(num>=nums[i])
14             {
15                 res=res+strs[i];
16                 int temp=num-nums[i];
17                 res=res+intToRoman(temp);
18                 break;
19             }
20         }
21         return res;
22     }
23 };
原文地址:https://www.cnblogs.com/aguai1992/p/4629298.html