Integer to English Words

来源:互联网 发布:手机淘宝聊天记录删除 编辑:程序博客网 时间:2024/06/05 21:23

题目描述:

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"

这个题难度没啥难度,就是考细节,各种空格问题。

public class Solution {    public String numberToWords(int num) {if(num==0)return "Zero";        StringBuilder sb=new StringBuilder();        String str=String.valueOf(num);        int n=0;        while(num>0){        n++;        num/=10;        }        int[] a=new int[(n-1)/3+1];        int firstLen=(n-1)%3+1;        a[0]=Integer.parseInt(str.substring(0, firstLen));        for(int i=1;i<a.length;i++){        a[i]=Integer.parseInt(str.substring(firstLen, firstLen+3));        firstLen+=3;        }        for(int i=0;i<a.length;i++){        sb.insert(0, getNumberStr(a[a.length-1-i],i,a.length));        }        return sb.toString();    }public String getNumberStr(int num, int k ,int len) {String[] strs1=new String[]{"One","Two","Three","Four","Five","Six","Seven","Eight","Nine"};String[] strs2=new String[]{"Ten","Eleven","Twelve","Thirteen","Fourteen","Fifteen","Sixteen","Seventeen","Eighteen","Nineteen"};String[] strs3=new String[]{"Twenty","Thirty","Forty","Fifty","Sixty","Seventy","Eighty","Ninety"};StringBuilder sb=new StringBuilder();//当num==0时直接返回""if(num==0)return sb.toString();      //第一个三位数分组前面没有空格,后面的三位数分组前面有空格if(k<len-1)sb.append(" ");int hundred =num/100;if(hundred>0) {sb.append(strs1[hundred-1]).append(" Hundred");if(num%100!=0)sb.append(" ");}int ten =num/10%10;//十位数分三种情况讨论if(ten==0){int one=num%10;if(one>0)sb.append(strs1[num%10-1]);}if(ten==1){sb.append(strs2[num%10]);}if(ten>1){sb.append(strs3[ten-2]);int one=num%10;if(one!=0)sb.append(" "+strs1[num%10-1]);}switch (k) {case 1:sb.append(" Thousand");break;case 2:sb.append(" Million");break;case 3:sb.append(" Billion");break;default:break;}return sb.toString();}}




0 0
原创粉丝点击