题解 | #学英语#

学英语

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;
    }
}

全部评论

相关推荐

09-13 17:25
亲切的00后在笔试:我也遇到了,所以我早他一步查看图片
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务