题目描述
思路分析
模拟题
首先英文数字结构为XXX,XXX,XXX。第一个逗号是Billion,第二个逗号是Million,第三个逗号是Thousand。然后每三位是一个整体,可以用一个get函数来输出。
代码实现
class Solution {
public:
string num0_19[20]={
"Zero","One","Two","Three","Four","Five","Six","Seven",
"Eight","Nine","Ten","Eleven","Twelve","Thirteen",
"Fourteen","Fifteen","Sixteen","Seventeen","Eighteen",
"Nineteen"
};
string num20_90[8]={
"Twenty","Thirty","Forty","Fifty",
"Sixty","Seventy","Eighty","Ninety"
};
string num1000[4]={
"Billion ","Million ","Thousand ",""
};
string get(int x)//1-999
{
string res;
if(x>=100){
res+=num0_19[x/100]+" Hundred ";
x%=100;
}
if(x>=20){
res+=num20_90[x/10-2]+" ";
x%=10;
if(x)res+=num0_19[x]+" ";
}
else if(x) res+=num0_19[x]+" ";
return res;
}
string numberToWords(int num) {
if(!num) return "Zero";
string res;
for(int i=1e9,j=0;i>=1;i/=1000,j++){
if(num>=i){
res+=get(num/i)+num1000[j];
num%=i;
}
}
res.pop_back();
return res;
}
};