leetcode 273 : Integer to English Words

来源:互联网 发布:2017最新网络热门话题 编辑:程序博客网 时间:2024/05/16 23:02

1、原题如下:
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”

2、解题如下:

class Solution {public:    string digits[20]={"zero","One","Two","Three","Four","Five","Six","Seven","Eight","Nine","Ten","Eleven","Twelve","Thirteen","Fourteen","Fifteen","Sixteen","Seventeen","Eighteen","Nineteen"};    string tens[10]={"zero","ten","Twenty","Thirty","Forty","Fifty","Sixty","Seventy","Eighty","Ninety"};    string inttostring(int n){        if(n>=1000000000)            return inttostring(n/1000000000)+" Billion"+inttostring(n%1000000000);        else if(n>=1000000)            return inttostring(n/1000000)+" Million"+inttostring(n%1000000);        else if(n>=1000)            return inttostring(n/1000)+" Thousand"+inttostring(n%1000);        else if(n>=100)            return inttostring(n/100)+" Hundred"+inttostring(n%100);        else if(n>=20)            return " "+tens[n/10]+inttostring(n%10);        else if(n>=1)            return " "+digits[n];        else             return "";    }    string numberToWords(int num) {            if(num==0)                return "Zero";            else            {                string result=inttostring(num);                return result.substr(1,result.size()-1);//这里最为关键,前面很难消除空格带来的影响,这里保证结果能够顺利读取出来,第一位被设定为空格,所以取消读取第一位,用substr函数从第二位开始读起~            }    }};
0 0
原创粉丝点击