题解 | #学英语#
学英语
https://www.nowcoder.com/practice/1364723563ab43c99f3d38b5abef83bc
import java.util.Arrays;
import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
static Map<String, String> hashmap = new HashMap<>();
final static String[] nums = new String[] {"one", "two", "three", "four", "five", "six", "seven", "eight", "nine"};
final static String[] danwei = new String[]{"billion", "million", "thousand", ""};
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
hashmap.put("01", "one");
hashmap.put("02", "two");
hashmap.put("03", "three");
hashmap.put("04", "four");
hashmap.put("05", "five");
hashmap.put("06", "six");
hashmap.put("07", "seven");
hashmap.put("08", "eight");
hashmap.put("09", "nine");
hashmap.put("10", "ten");
hashmap.put("11", "eleven");
hashmap.put("12", "twelve");
hashmap.put("13", "thirteen");
hashmap.put("14", "fourteen");
hashmap.put("15", "fifteen");
hashmap.put("16", "sixteen");
hashmap.put("17", "seventeen");
hashmap.put("18", "eighteen");
hashmap.put("19", "nineteen");
hashmap.put("20", "twenty");
hashmap.put("30", "thirty");
hashmap.put("40", "forty");
hashmap.put("50", "fifty");
hashmap.put("60", "sixty");
hashmap.put("70", "seventy");
hashmap.put("80", "eighty");
hashmap.put("90", "ninety");
// 注意 hasNext 和 hasNextLine 的区别
while (in.hasNextLine()) {
String number = in.nextLine();
int n = number.length();
StringBuilder sb = new StringBuilder();
int k=0;
if(n%3 != 0){
sb.append(number.substring(0,n%3)+",");
k=n%3;
}
for( ; k<n ; k+=3){
sb.append(number.substring(k,k+3));
if(k+3 != n){
sb.append(",");
}
}
String[] ss = sb.toString().split(",");
//System.out.println(ss.length);
String ans="";
for (int i = 0 ; i < ss.length ; ++i) {
String s = ss[i];
if(s.equals("000")){
ans+=" ";
continue;
}
//System.out.println(s);
ans+=help(s)+danwei[danwei.length-ss.length+i]+" ";
}
System.out.println(ans);
}
}
public static String help(String s) {
int n = s.length();
String ans = "";
if (n == 3) {
if (s.charAt(0) != '0') {
ans += nums[Integer.valueOf(s.charAt(0)+"")-1] + " " + "hundred ";
if(s.substring(1,3).equals("00")){
return ans+" ";
}
}
if(s.substring(0,2).equals("00")){
ans+=nums[Integer.valueOf(s.charAt(2)+"")-1]+" ";
return ans;
}
if (hashmap.containsKey(s.substring(1, 3))) {
ans += "and " + hashmap.get(s.substring(1, 3)) + " ";
}
else {
String shiwei = String.valueOf(Integer.valueOf(s.charAt(1) + "0"));
if(s.charAt(0)!='0'){
ans += "and ";
}
ans += hashmap.get(shiwei) + " ";
//System.out.println(s.charAt(2));
ans += nums[Integer.valueOf(s.charAt(2)+"") - 1] + " ";
}
}
else if (n == 2) {
if (hashmap.containsKey(s.substring(0, 2))) {
ans += hashmap.get(s.substring(0, 2)) + " ";
} else {
String shiwei = String.valueOf(Integer.valueOf(s.charAt(0) + "0"));
ans += hashmap.get(shiwei) + " ";
ans += nums[Integer.valueOf(s.charAt(1)+"") - 1] + " ";
}
}
else if(n == 1){
ans += nums[Integer.valueOf(s.charAt(0)+"")-1]+" ";
}
return ans;
}
}



