[LeetCode 273] Integer to English Word

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"

Hint:

solution:

Just as hint described, handle 3digit at each time, convert them into English word,

every time handle 3 digit, the unit will increase.

So many corner cases need to handle.

public String numberToWords(int num) {String[] units = {""," Thousand"," Million"," Billion"};int i = 0;String res="";while(num>0) {int temp = num%1000;if(temp>0) res = convert(temp) + units[i] + (res.length()==0 ?"": " "+res);num /= 1000;i++;}return res.isEmpty()? "Zero" : res;}public String convert(int num){String res = "";String[] ten = {"Zero", "One", "Two", "Three", "Four", "Five", "Six", "Seven", "Eight", "Nine"};String[] hundred = {"Ten", "Twenty", "Thirty", "Forty", "Fifty", "Sixty", "Seventy", "Eighty", "Ninety"};String[] twenty = {"Ten", "Eleven", "Twelve", "Thirteen", "Fourteen", "Fifteen", "Sixteen", "Seventeen", "Eighteen", "Nineteen"};if(num>0) {int temp = num/100;if(temp>0) {res += ten[temp] + " Hundred";}temp = num%100;if(temp>=10 && temp<20){if(!res.isEmpty()) res +=" ";res = res + twenty[temp%10];return res;}else if(temp>=20){temp = temp/10;if(!res.isEmpty()) res +=" ";res = res + hundred[temp-1];}temp = num%10;if(temp>0) {if(!res.isEmpty()) res +=" ";res = res + ten[temp];}}return res;}

版权声明:本文为博主原创文章,未经博主允许不得转载。

,在那里,有我们特有的记忆,亲情之忆、

[LeetCode 273] Integer to English Word

相关文章:

你感兴趣的文章:

标签云: