日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

罗马数字和阿拉伯数字之间的转换

發布時間:2023/12/14 编程问答 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 罗马数字和阿拉伯数字之间的转换 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

問題描述:把我們常見的阿拉伯數字轉化為羅馬數字的形式。
拓展:兩種形式的相互轉換。
思路:將阿拉伯數字拆分為能夠被羅馬數字整除的形式(比如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++) {$str .= $key;}}}return str_replace(['IIII','XXXX','CCCC','VIV','LXL','DCD'],['IV','XL','CD','IX','XC','CM'],$str); }

我們發現,如4、9、40、90這種轉換為羅馬數字之后還需要做額外的替換,那為何不直接將其添加到數組里面去呢?

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代替循環$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

總結

以上是生活随笔為你收集整理的罗马数字和阿拉伯数字之间的转换的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。