[leetcode-273]Integer to English Words(java)
来源:互联网 发布:python 字典删除元素 编辑:程序博客网 时间:2024/05/17 03:19
问题描述:
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”
分析:这道题就是使用最直观的,将整数变成字符串,然后以3为单位将字符串进行切割。然后分别对每一组进行单独处理。
我最开始是将起作为整数进行处理的,可后来发现,当出现1000000时,应该写作One Million,而如果用整数的话,那输出结果会为One Million Thousand,而且似乎没有明显的方法来解决。
代码如下:276ms
public class Solution { public String numberToWords(int num) { String str = Integer.toString(num); StringBuilder builder = new StringBuilder(); if(num==0) return "Zero"; int length = str.length(); int groups = (length+2)/3;//可以分为多少组 int index = length%3; int base = groups; if(index==0) index = 3; while(base>=1){ String substr = str.substring(0,index); if(Integer.parseInt(substr)!=0){ String tmp = parseStr(Integer.parseInt(substr)); builder.append(tmp); switch (base){ case 2: builder.append("Thousand "); break; case 3: builder.append("Million "); break; case 4: builder.append("Billion "); break; default: break; } } str = str.substring(index); index = 3; base--; } builder.deleteCharAt(builder.length() - 1); return builder.toString(); } private String parseStr(int num){ int base = 100; StringBuilder builder = new StringBuilder(); while (base>=1){ int val = num/base; if(val!=0) { if (val == 1 && base == 10) break; switch (val){ case 1: if(base==100) { builder.append("One Hundred "); }else if(base == 1) builder.append("One "); break; case 2: if(base==100) { builder.append("Two Hundred "); }else if(base == 10) builder.append("Twenty "); else builder.append("Two "); break; case 3: if(base==100){ builder.append("Three Hundred "); }else if(base == 10) builder.append("Thirty "); else builder.append("Three "); break; case 4: if(base==100) builder.append("Four Hundred "); else if(base == 10) builder.append("Forty "); else builder.append("Four "); break; case 5: if(base==100) builder.append("Five Hundred "); else if(base==10) builder.append("Fifty "); else builder.append("Five "); break; case 6: if(base==100) builder.append("Six Hundred "); else if(base == 10) builder.append("Sixty "); else builder.append("Six "); break; case 7: if(base == 100) builder.append("Seven Hundred "); else if(base == 10) builder.append("Seventy "); else builder.append("Seven "); break; case 8: if(base==100) builder.append("Eight Hundred "); else if(base == 10) builder.append("Eighty "); else builder.append("Eight "); break; case 9: if(base==100) builder.append("Nine Hundred "); else if(base==10) builder.append("Ninety "); else builder.append("Nine "); break; default: break; } } num %= base; base /= 10; } if(num>=10 && num<=19){ switch (num){ case 10: builder.append("Ten "); break; case 11: builder.append("Eleven "); break; case 12: builder.append("Twelve "); break; case 13: builder.append("Thirteen "); break; case 14: builder.append("Fourteen "); break; case 15: builder.append("Fifteen "); break; case 16: builder.append("Sixteen "); break; case 17: builder.append("Seventeen "); break; case 18: builder.append("Eighteen "); break; case 19: builder.append("Nineteen "); break; default: break; } } return builder.toString(); }}
0 0
- [leetcode-273]Integer to English Words(java)
- [leetcode 273]Integer to English Words
- leetcode 273: Integer to English Words
- leetcode 273 : Integer to English Words
- LeetCode 273 Integer to English Words
- LeetCode 273 Integer to English Words
- LeetCode #273: Integer to English Words
- leetcode - Integer to English Words
- [leetcode] Integer to English Words
- Integer to English Words -- leetcode
- [LeetCode] Integer to English Words
- LeetCode -- Integer to English Words
- 【LeetCode】Integer to English Words
- LeetCode Integer to English Words
- Leetcode: Integer to English Words
- leetcode:Integer to English Words
- 【LeetCode】Integer to English Words
- [273]Integer to English Words
- mysql create database 指定utf-8编码
- 工厂方法与抽象工厂结合(Pizza)
- Sql 函数
- 仿QQ 拖动小红点原理及其实现
- 什么是类发射
- [leetcode-273]Integer to English Words(java)
- Android自学笔记之ProgressBar进度条的属性、常用方法及使用
- freemarker各种转换
- leetcode-258-Add Digits
- 将 paired count 和unpaired count 相加
- 野人学Android基础篇之初探UI控件第六课--ListView和他的adapter们(四)
- Maven的Archetype简介
- 苹果应用提交的"Missing Push Notification Entitlement"警告
- Sublime Text 3安装与使用