标签:
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"};
};
版权声明:本文为博主原创文章,未经博主允许不得转载。
[LeetCode] Integer to English Words
标签:
原文地址:http://blog.csdn.net/foreverling/article/details/49701899