Convert a non-negative integer to its english words representation. Given input is guaranteed to be less than
For example,
123 -> “One Hundred Twenty Three”
12345 -> “Twelve Thousand Three Hundred Forty Five”
1234567 -> “One Million Two Hundred Thirty Four Thousand Five Hundred Sixty Seven”
略。
// Runtime: 8 ms
class Solution {
public:
string numberToWords(int num) {
return num2str(num);
}
private:
string num2str(int num)
{
string res = ;
if (num <= 19)
{
res += nums[num];
}
else if (num <= 99)
{
res += tens[num / 10];
if (num % 10 != 0)
{
res += ;
res += num2str(num % 10);
}
}
else if (num <= 999)
{
res += num2str(num / 100);
res += Hundred;
if (num % 100 != 0)
{
res += ;
res += num2str(num % 100);
}
}
else if (num <= 999999)
{
res += num2str(num / 1000);
res += Thousand;
if (num % 1000 != 0)
{
res += ;
res += num2str(num % 1000);
}
}
else if (num <= 999999999)
{
res += num2str(num / 1000000);
res += Million;
if (num % 1000000 != 0)
{
res += ;
res += num2str(num % 1000000);
}
}
else if (num <= 999999999999)
{
res += num2str(num / 1000000000);
res += Billion;
if (num % 1000000000 != 0)
{
res += ;
res += num2str(num % 1000000000);
}
}
return res;
}
string tens[10] = {, , Twenty, Thirty, Forty, Fifty, Sixty, Seventy, Eighty, Ninety};
string nums[20] = {Zero, One, Two, Three, Four, Five, Six, Seven, Eight,
Nine, Ten, Eleven, Twelve, Thirteen, Fourteen, Fifteen, Sixteen, Seventeen,
Eighteen, Nineteen};
};