Integer to Roman

首先是我自己看完网上的罗马数规则写的又臭又长的代码!(捂脸!!)

 1 class Solution {
 2 public:
 3     string intToRoman(int num) {
 4         string s="";
 5         int a[4]={0},i=3;
 6         while(num!=0)
 7         {
 8             a[i]=num%10;
 9             num=num/10;
10             i--;
11         }
12         while(a[0]!=0)
13         {
14             s=s+'M';
15             a[0]--;
16         }
17         if(a[1]!=0)
18         {
19             if(a[1]==9) s=s+'C'+'M';
20             else if(a[1]>=5) 
21                   {
22                    s=s+'D';
23                    a[1]=a[1]-5;
24                    while(a[1]!=0)
25                      {
26                        s=s+'C';
27                        a[1]--;
28                      }
29                   }
30                   else{
31                       if(a[1]==4) s=s+'C'+'D';
32                       else{ while(a[1]!=0)
33                      {
34                        s=s+'C';
35                        a[1]--;
36                      }
37                           }
38                   }
39         }
40          if(a[2]!=0)
41         {
42             if(a[2]==9) s=s+'X'+'C';
43             else if(a[2]>=5) 
44                   {
45                    s=s+'L';
46                    a[2]=a[2]-5;
47                    while(a[2]!=0)
48                      {
49                        s=s+'X';
50                        a[2]--;
51                      }
52                   }
53                   else{
54                       if(a[2]==4) s=s+'X'+'L';
55                       else{  while(a[2]!=0)
56                      {
57                        s=s+'X';
58                        a[2]--;
59                      }
60                     }
61                   }
62         }
63         if(a[3]!=0)
64         {
65             if(a[3]==9) s=s+'I'+'X';
66             else if(a[3]>=5) 
67                   {
68                    s=s+'V';
69                    a[3]=a[3]-5;
70                    while(a[3]!=0)
71                      {
72                        s=s+'I';
73                        a[3]--;
74                      }
75                   }
76                   else{
77                       if(a[3]==4) s=s+'I'+'V';
78                       else{ while(a[3]!=0)
79                       {
80                        s=s+'I';
81                        a[3]--;
82                       }
83                           }
84                   }
85         }
86         return s;
87     }
88 };

   下面的是网上流传比较简单的:

1   public static String intToRoman(int num) {
2         String M[] = {"", "M", "MM", "MMM"};
3         String C[] = {"", "C", "CC", "CCC", "CD", "D", "DC", "DCC", "DCCC", "CM"};
4         String X[] = {"", "X", "XX", "XXX", "XL", "L", "LX", "LXX", "LXXX", "XC"};
5         String I[] = {"", "I", "II", "III", "IV", "V", "VI", "VII", "VIII", "IX"};
6         return M[num/1000] + C[(num%1000)/100] + X[(num%100)/10] + I[num%10];
7     }
原文地址:https://www.cnblogs.com/daocaorenblog/p/5216715.html