题目

类型:String
image.png

解题思路

image.png

代码

  1. class Solution {
  2. String[] singles = {"", "One", "Two", "Three", "Four", "Five", "Six", "Seven", "Eight", "Nine"};
  3. String[] teens = {"Ten", "Eleven", "Twelve", "Thirteen", "Fourteen", "Fifteen", "Sixteen", "Seventeen", "Eighteen", "Nineteen"};
  4. String[] tens = {"", "Ten", "Twenty", "Thirty", "Forty", "Fifty", "Sixty", "Seventy", "Eighty", "Ninety"};
  5. String[] thousands = {"", "Thousand", "Million", "Billion"};
  6. public String numberToWords(int num) {
  7. if (num == 0) {
  8. return "Zero";
  9. }
  10. StringBuffer sb = new StringBuffer();
  11. for (int i = 3, unit = 1000000000; i >= 0; i--, unit /= 1000) {
  12. int curNum = num / unit;
  13. if (curNum != 0) {
  14. num -= curNum * unit;
  15. StringBuffer curr = new StringBuffer();
  16. recursion(curr, curNum);
  17. curr.append(thousands[i]).append(" ");
  18. sb.append(curr);
  19. }
  20. }
  21. return sb.toString().trim();
  22. }
  23. public void recursion(StringBuffer curr, int num) {
  24. if (num == 0) {
  25. return;
  26. } else if (num < 10) {
  27. curr.append(singles[num]).append(" ");
  28. } else if (num < 20) {
  29. curr.append(teens[num - 10]).append(" ");
  30. } else if (num < 100) {
  31. curr.append(tens[num / 10]).append(" ");
  32. recursion(curr, num % 10);
  33. } else {
  34. curr.append(singles[num / 100]).append(" Hundred ");
  35. recursion(curr, num % 100);
  36. }
  37. }
  38. }