Descripción del título
Entero a las palabras inglesas
Código AC
El significado de esta pregunta es darle un número para que pueda expresar la lectura en inglés correspondiente. Leer un número en inglés tiene la característica de que cada tres números son un grupo (puede observar la lectura de muestra dada). Que podemos representar un número: el rango en el que la matriz está subrayado 1 a 999 (el último subrayado, este número 0 Laid condena a cabo por separado), __million__billion__thousand___
. Para cada parte subrayada, puede escribir una función de parte por separado, es decir, ingrese un número dentro de 1000, el método de parte puede devolver su lectura en inglés correspondiente, y finalmente cada parte se divide en el millón / billón / mil correspondiente. .
class Solution {
String[] small={"Zero","One","Two","Three","Four","Five","Six","Seven","Eight","Nine","Ten",
"Eleven","Twelve","Thirteen","Fourteen","Fifteen","Sixteen","Seventeen","Eighteen","Nineteen"};
String[] decade={"","","Twenty","Thirty","Forty","Fifty","Sixty","Seventy","Eighty","Ninety"};
String[] big={"Billion","Million","Thousand",""};
public String numberToWords(int num) {
//特判0。
if(num==0) return small[0];
String res="";
for(int i=1000000000,j=0;i>0;i/=1000,j++)
{
if(num>=i){
res+=part(num/i)+big[j]+' ';
num%=i;
}
}
while(res.charAt(res.length()-1)==' ') res=res.substring(0,res.length()-1);
return res;
}
String part(int num){
String res="";
if(num>=100){
//此处需要注意Hundred前后都有空格
res+=small[num/100]+" Hundred ";
num%=100;
}
if(num==0) return res;
//小于20的,可以直接加
if(num>=20){
res+=decade[num/10]+' ';
num%=10;
}
if(num==0) return res;
res+=small[num]+' ';
return res;
}
}