[Leetcode] Integer to Roman

博客介绍了数字转罗马文字的方法,提到4和9有特例。需将千、百、十及余数的系数取出,若系数为9或4则对应固定罗马数字,否则按系数与5的运算结果重复相应次数,最后相加得出结果。

 

 

 

 

數字轉羅馬文字,4 & 9 有特例

,除 千 百 十 及餘 取係數出來,如果係數== 9 or 4 就固定某個roman number,不是就 repeat 係數/5的次數 及 repeate 係數% 5的次數,全部加起來就是了

 

 1 public string IntToRoman(int num)
 2         {
 3             string result = string.Empty;
 4             //千位
 5             var thun = num / 1000;
 6             //百位
 7             var hun = (num = (num - (thun * 1000))) / 100;
 8             //十位
 9             var ten = (num = (num - (hun * 100))) / 10;
10             //個位
11             var remain = num % 10;
12 
13             result += string.Join("", Enumerable.Repeat("M", thun));
14 
15             if (hun == 9)
16                 result += "CM";
17             else if (hun == 4)
18                 result += "CD";
19             else
20             {
21                 //500的重複
22                 result += string.Join("", Enumerable.Repeat("D", hun / 5));
23                 //小於500的重複
24                 result += string.Join("", Enumerable.Repeat("C", hun % 5));
25             }
26 
27             if (ten == 9)
28                 result += "XC";
29             else if (ten == 4)
30                 result += "XL";
31             else
32             {
33                 //50的重複
34                 result += string.Join("", Enumerable.Repeat("L", ten / 5));
35                 //小於50的重複
36                 result += string.Join("", Enumerable.Repeat("X", ten % 5));
37             }
38 
39             if (remain == 9)
40                 result += "IX";
41             else if (remain == 4)
42                 result += "IV";
43             else
44             {
45                 //5的重複
46                 result += string.Join("", Enumerable.Repeat("V", remain / 5));
47                 //小於5的重複
48                 result += string.Join("", Enumerable.Repeat("I", remain % 5));
49             }
50 
51             return result;
52         }

 

转载于:https://www.cnblogs.com/seako/p/10937142.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值