成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

阿拉伯數(shù)字轉中文數(shù)字思路及解決算法(以PHP語言描述)

terro / 1314人閱讀

摘要:前段時間在社區(qū)看到一個很有意思的題目數(shù)字轉中文語言描述一開始我是這樣寫的將一個字符串轉換為數(shù)組零一二三四五六七八九一二三七一二四一二九一二四然后題主回復我說根據(jù)你這個我只能做出來十以內的開始我的理解太過簡單,所以又寫了一下思路是這樣的第一次

前段時間在 segmentfault 社區(qū)看到一個很有意思的題目

數(shù)字轉中文(PHP語言描述)

一開始我是這樣寫的


然后題主回復我說:根據(jù)你這個我只能做出來十以內的

開始我的理解太過簡單,所以又寫了一下

思路是這樣的

第一次寫,已經可以把阿拉伯數(shù)字翻譯為中文數(shù)字,但是真正的數(shù)都是有數(shù)階(個、十、百、千)的。

顯然簡單的翻譯還不能稱之為數(shù)

那么思路就來了,計算出每個數(shù)的權位,加上權位不就可以了嗎

123 翻譯為中文就是 一二三

下一步就是加上權位

一位數(shù)是個
二位數(shù)是十
三位數(shù)是千
...

以此類推

這樣不就很明顯用數(shù)組表示最合適不過了

["","十","百","千","萬","十","百","千","億","十","百","千"]

這樣遍歷的時候簡單合并不就Ok 了嗎?

先不管對錯,試一下(以123為例)

遍歷

1=>一 + 
2=>二 + 十
3=>三 + 百

結果為 一二十三百

很明顯,權位是反的

有兩種解決思路,第一種先判斷位數(shù),計算數(shù)階,第二種是反向遍歷,從個位遍歷起

第二種

php 中 先翻轉 123 => 321

遍歷之后輸出 一十二百三

反轉字符串即為正解

PHP 中有很多字符串反轉函數(shù),但是中文反轉會亂碼,使用mb_substr()函數(shù)解決中文亂碼

完整代碼如下

 $value) 
        $str .= $ws[$key].$cns[$value];
    $temp = "";//反轉字符串
    for($i = strlen($str)-1; $i>=0; $i--)
        $temp .= mb_substr($str,$i,1,"utf-8");

    return $temp;
}

echo IntToString(231231251237);
////二千三百一十二億三千一百二十五萬一千二百三十七

這次直接支持支持千億級別的數(shù),修改 ws 數(shù)組可以無限擴充

修改$cns數(shù)組讓這個函數(shù)支持,數(shù)字大寫,支持人民幣結算

第一種
//數(shù)階數(shù)組
$rank = ["","十","百","千","萬","十","百","千"];
//中文數(shù)字數(shù)組
$cns = ["零","一","二","三","四","五","六","七","八","九"];
//數(shù)字轉數(shù)組
$arr = str_split((string)$num,1);

//獲取數(shù)階數(shù)組
$nowRank = array_reverse(array_slice($rank,0,strlen($num)));

foreach ($arr as $key => $value) {
    echo $cns[$value].$nowRank[$key];
}

中華語言博大精深

如果輸入14 會輸出 一十四,而實際我們只會讀為十四;
如果輸入1000會輸出一千零百零十零,而實際我們只會讀為一千;
如果輸入1020會輸出一千零百二十零,而實際我們只會讀為一千零二十;

下一步需要解決這些問題,如果解決了,會更新此文

好了,不多說了,接著搬磚了

原文地址:https://blog.codefun.cn/blog/...

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉載請注明本文地址:http://systransis.cn/yun/30607.html

相關文章

  • PHP 的方式實現(xiàn)的各類算法合集

    摘要:數(shù)據(jù)項是數(shù)據(jù)的不可分割的最小單位。數(shù)據(jù)項是對客觀事物某一方面特性的數(shù)據(jù)描述。數(shù)據(jù)對象是性質相同的數(shù)據(jù)元素的集合,是數(shù)據(jù)的一個子集。數(shù)據(jù)的邏輯結構數(shù)據(jù)元素之間的相互關系稱為邏輯結構。 項目地址 https://github.com/m9rco/algo... 每周最少一更,求出題,求虐待 At least once a week, ask for problems and abuse 簡...

    Karrdy 評論0 收藏0
  • PHP 的方式實現(xiàn)的各類算法合集

    摘要:數(shù)據(jù)項是數(shù)據(jù)的不可分割的最小單位。數(shù)據(jù)項是對客觀事物某一方面特性的數(shù)據(jù)描述。數(shù)據(jù)對象是性質相同的數(shù)據(jù)元素的集合,是數(shù)據(jù)的一個子集。數(shù)據(jù)的邏輯結構數(shù)據(jù)元素之間的相互關系稱為邏輯結構。 項目地址 https://github.com/m9rco/algo... 每周最少一更,求出題,求虐待 At least once a week, ask for problems and abuse 簡...

    pakolagij 評論0 收藏0
  • PHP 的方式實現(xiàn)的各類算法合集

    摘要:數(shù)據(jù)項是數(shù)據(jù)的不可分割的最小單位。數(shù)據(jù)項是對客觀事物某一方面特性的數(shù)據(jù)描述。數(shù)據(jù)對象是性質相同的數(shù)據(jù)元素的集合,是數(shù)據(jù)的一個子集。數(shù)據(jù)的邏輯結構數(shù)據(jù)元素之間的相互關系稱為邏輯結構。 項目地址 https://github.com/m9rco/algo... 每周最少一更,求出題,求虐待 At least once a week, ask for problems and abuse 簡...

    leonardofed 評論0 收藏0
  • 王者編程大賽之一

    摘要:首發(fā)于樊浩柏科學院本次王者編程大賽分為個組別,分別為研發(fā)測試移動戰(zhàn)場。本章只敘述前道相對簡單的題目,后續(xù)題目及解題思路將在王者編程大賽系列中列出。 首發(fā)于 樊浩柏科學院 本次王者編程大賽分為 3 個組別,分別為研發(fā)、測試、移動戰(zhàn)場。這里只討論研發(fā)戰(zhàn)場所考的 題目,本次大賽共有 7 道題,主要考查點為基礎算法,解題所用語言不做限制,但是需要在 在線驗證平臺 使用標準輸入并驗證通過,最后...

    justCoding 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<