罗马数字和阿拉伯数字之间的转换
生活随笔
收集整理的這篇文章主要介紹了
罗马数字和阿拉伯数字之间的转换
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
問題描述:把我們常見的阿拉伯?dāng)?shù)字轉(zhuǎn)化為羅馬數(shù)字的形式。
拓展:兩種形式的相互轉(zhuǎn)換。
思路:將阿拉伯?dāng)?shù)字拆分為能夠被羅馬數(shù)字整除的形式(比如100、500等),再整合到一起,然后替換字符為我們需要的形式(比如IIII=>IV,VIV=>IX等等)。再使用鍵值對形式的數(shù)組,在實現(xiàn)阿拉伯?dāng)?shù)字轉(zhuǎn)羅馬數(shù)字之后,交換鍵值,就能實現(xiàn)反向轉(zhuǎn)換了。
我們發(fā)現(xiàn),如4、9、40、90這種轉(zhuǎn)換為羅馬數(shù)字之后還需要做額外的替換,那為何不直接將其添加到數(shù)組里面去呢?
function solution(int $number){$roman = ['M' => 1000,'CM' => 900,'D' => 500,'CD' => 400,'C' => 100,'XC' => 90,'L' => 50,'XL' => 40,'X' => 10,'IX' => 9,'V' => 5,'IV' => 4,'I' => 1];foreach($roman as $key=>$item){//使用str_repeat代替循環(huán)$str.= str_repeat($key,intval($number/$item));$number %= $value;}return $str; } //個人感覺這種思想方式也很簡單靈巧 function solution($n){$M = ["","M","MM","MMM"];$C = ["","C","CC","CCC","CD","D","DC","DCC","DCCC","CM"];$X = ["","X","XX","XXX","XL","L","LX","LXX","LXXX","XC"];$I = ["","I","II","III","IV","V","VI","VII","VIII","IX"];return $M[$n/1000].$C[($n % 1000)/100].$X[($n % 100)/10].$I[($n % 10)]; }另外,如果你有興趣,或者是有問題想要與我探討,歡迎來訪問我的博客:https:mu-mu.cn/blog
總結(jié)
以上是生活随笔為你收集整理的罗马数字和阿拉伯数字之间的转换的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: cocosbuilder入门
- 下一篇: [转]魔兽世界私服Trinity,从源码