问题描述:把我们常见的阿拉伯数字转化为罗马数字的形式。
拓展:两种形式的相互转换。
思路:将阿拉伯数字拆分为能够被罗马数字整除的形式(比如100、500等),再整合到一起,然后替换字符为我们需要的形式(比如IIII=>IV,VIV=>IX等等)。再使用键值对形式的数组,在实现阿拉伯数字转罗马数字之后,交换键值,就能实现反向转换了。
function solution($number) {
$roman = array(
'M' => 1000,
'D' => 500,
'C' => 100,
'L' => 50,
'X' => 10,
'V' => 5,
'I' => 1
);
//从大到小遍历,拆分阿拉伯数字
foreach($roman as $key=>$item) {
if($number / $item > 0) {
$int = intval($number / $item);
$number -= $int * $item;
for($i=0;$i<$int;$i++) {