[leetcode-273]Integer to English Words(java)
2015-08-31 12:55
405 查看
问题描述:
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
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
[code]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(); } }
相关文章推荐
- java内存回收机制
- 利用javadoc生成API文档
- java项目转成WEB项目快捷方法
- Struts2+Spring+Ibatis集成合并
- 【spring框架】(三)面向切面编程(AOP)
- 关于在Spring配置文件中解决MySQL重连问题
- microsoft docx document operation with Java POI library
- 深入理解Java:SimpleDateFormat安全的时间格式化
- Java程序台写的五子棋
- 深入理解Java内存模型
- Spring依赖注入
- Spring笔记——依赖注入
- eclipse安装EXT JS插件
- Lucene-Java全文搜索引擎
- Java中JDBC的基本步骤
- java判断数据类型两种方式
- java 多态[编程思想之8.2.1]
- Struts2与JSON数据的具体应用范例
- eclipse显示项目中的问题
- 页面防止重复提交,在服务端使用struts令牌机制,前台分为jsp和extJs(其他js框架同理)