生活随笔
收集整理的這篇文章主要介紹了
273. 整数转换英文表示(模拟)
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
將非負整數(shù)轉(zhuǎn)換為其對應(yīng)的英文表示。可以保證給定輸入小于 231 - 1 。
示例 1:
輸入: 123
輸出: “One Hundred Twenty Three”
示例 2:
輸入: 12345
輸出: “Twelve Thousand Three Hundred Forty Five”
示例 3:
輸入: 1234567
輸出: “One Million Two Hundred Thirty Four Thousand Five Hundred Sixty Seven”
示例 4:
輸入: 1234567891
輸出: “One Billion Two Hundred Thirty Four Million Five Hundred Sixty Seven Thousand Eight Hundred Ninety One”
讀法就是仿效123,456,789每次三個數(shù)這樣的讀。我們一開始將可能用到的所有的單詞都存儲起來。而且這道題目不需要and了。這樣就簡單很多了。注意要處理“000”這樣的時候。
代碼如下:
class Solution {private:string units
[11] = {""," Thousand"," Million"," Billion"};string num0To9
[11] = {"Zero", "One", "Two", "Three", "Four", "Five", "Six", "Seven", "Eight", "Nine"};string num10To19
[11] = {"Ten", "Eleven", "Twelve", "Thirteen", "Fourteen", "Fifteen", "Sixteen", "Seventeen", "Eighteen", "Nineteen"};string num10To90
[11] = {"Ten", "Twenty", "Thirty", "Forty", "Fifty", "Sixty", "Seventy", "Eighty", "Ninety"};public:string
fcs(int num
){if(num
==0) return "";else if(num
>=1&&num
<=9) return num0To9
[num
];else if(num
>=10&&num
<=19) return num10To19
[num
-10];else if(num
>=20&&num
<=99){if(num
%10==0) return num10To90
[num
/10-1];else return num10To90
[num
/10-1]+" "+num0To9
[num
%10];}else{string ans
="";if(num
%100==0) return num0To9
[num
/100]+" Hundred";else return num0To9
[num
/100]+" Hundred "+fcs(num
%100);}}string
numberToWords(int num
) {if(num
==0) return "Zero";else if(num
>=1&&num
<=9) return num0To9
[num
];else if(num
>=10&&num
<=19) return num10To19
[num
-10];else{string ans
="";int cnt
=0;while(num
){string ss
=units
[cnt
];string temp
=fcs(num
%1000);if(temp
=="") ss
="";else temp
=temp
+ss
;if(ans
.length()!=0&&num
%1000!=0) ans
=temp
+" "+ans
;else ans
=temp
+ans
;num
=(num
-num
%1000)/1000;cnt
++;}return ans
;}}
};
努力加油a啊,(o)/~
總結(jié)
以上是生活随笔為你收集整理的273. 整数转换英文表示(模拟)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。