摘要:前段時間在社區(qū)看到一個很有意思的題目數字轉中文語言描述一開始我是這樣寫的將一個字符串轉換為數組零一二三四五六七八九一二三七一二四一二九一二四然后題主回復我說根據你這個我只能做出來十以內的開始我的理解太過簡單,所以又寫了一下思路是這樣的第一次
前段時間在 segmentfault 社區(qū)看到一個很有意思的題目
數字轉中文(PHP語言描述)
一開始我是這樣寫的
然后題主回復我說:根據你這個我只能做出來十以內的
開始我的理解太過簡單,所以又寫了一下
思路是這樣的第一次寫,已經可以把阿拉伯數字翻譯為中文數字,但是真正的數都是有數階(個、十、百、千)的。
顯然簡單的翻譯還不能稱之為數
那么思路就來了,計算出每個數的權位,加上權位不就可以了嗎
123 翻譯為中文就是 一二三
下一步就是加上權位
一位數是個
二位數是十
三位數是千
...以此類推
這樣不就很明顯用數組表示最合適不過了
["","十","百","千","萬","十","百","千","億","十","百","千"]這樣遍歷的時候簡單合并不就Ok 了嗎?
先不管對錯,試一下(以123為例)
遍歷
1=>一 + 2=>二 + 十 3=>三 + 百結果為 一二十三百
很明顯,權位是反的
有兩種解決思路,第一種先判斷位數,計算數階,第二種是反向遍歷,從個位遍歷起
第二種php 中 先翻轉 123 => 321
遍歷之后輸出 一十二百三
反轉字符串即為正解
PHP 中有很多字符串反轉函數,但是中文反轉會亂碼,使用mb_substr()函數解決中文亂碼
完整代碼如下
$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); ////二千三百一十二億三千一百二十五萬一千二百三十七這次直接支持支持千億級別的數,修改 ws 數組可以無限擴充
修改$cns數組讓這個函數支持,數字大寫,支持人民幣結算
第一種//數階數組 $rank = ["","十","百","千","萬","十","百","千"]; //中文數字數組 $cns = ["零","一","二","三","四","五","六","七","八","九"]; //數字轉數組 $arr = str_split((string)$num,1); //獲取數階數組 $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ī)行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://m.hztianpu.com/yun/30607.html
摘要:數據項是數據的不可分割的最小單位。數據項是對客觀事物某一方面特性的數據描述。數據對象是性質相同的數據元素的集合,是數據的一個子集。數據的邏輯結構數據元素之間的相互關系稱為邏輯結構。 項目地址 https://github.com/m9rco/algo... 每周最少一更,求出題,求虐待 At least once a week, ask for problems and abuse 簡...
摘要:數據項是數據的不可分割的最小單位。數據項是對客觀事物某一方面特性的數據描述。數據對象是性質相同的數據元素的集合,是數據的一個子集。數據的邏輯結構數據元素之間的相互關系稱為邏輯結構。 項目地址 https://github.com/m9rco/algo... 每周最少一更,求出題,求虐待 At least once a week, ask for problems and abuse 簡...
摘要:數據項是數據的不可分割的最小單位。數據項是對客觀事物某一方面特性的數據描述。數據對象是性質相同的數據元素的集合,是數據的一個子集。數據的邏輯結構數據元素之間的相互關系稱為邏輯結構。 項目地址 https://github.com/m9rco/algo... 每周最少一更,求出題,求虐待 At least once a week, ask for problems and abuse 簡...
摘要:首發(fā)于樊浩柏科學院本次王者編程大賽分為個組別,分別為研發(fā)測試移動戰(zhàn)場。本章只敘述前道相對簡單的題目,后續(xù)題目及解題思路將在王者編程大賽系列中列出。 首發(fā)于 樊浩柏科學院 本次王者編程大賽分為 3 個組別,分別為研發(fā)、測試、移動戰(zhàn)場。這里只討論研發(fā)戰(zhàn)場所考的 題目,本次大賽共有 7 道題,主要考查點為基礎算法,解題所用語言不做限制,但是需要在 在線驗證平臺 使用標準輸入并驗證通過,最后...
閱讀 3017·2023-04-26 02:49
閱讀 3531·2021-11-25 09:43
閱讀 3731·2021-10-09 09:43
閱讀 3178·2021-09-28 09:44
閱讀 2547·2021-09-22 15:29
閱讀 4744·2021-09-14 18:02
閱讀 2855·2021-09-03 10:48
閱讀 3488·2019-08-30 12:47