Convert a non-negative integer to its english words representation. Given input is guaranteed to be less than 231−1.
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"};
};
时间: 2024-10-21 23:57:43