题解 | 学英语

学英语

https://www.nowcoder.com/practice/1364723563ab43c99f3d38b5abef83bc

import java.util.*;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        while(scanner.hasNextLine()) {
            String line = scanner.nextLine();
            int length = line.length() / 3;
            if(line.length() % 3 != 0)
            {
                length = length + 1;
            }
            String[] splits = new String[length];
            int  index = length - 1;
            /**
             * 请注意,不包括位置i的元素,所以是i > 0,不能是i >= 0
             */
            for(int i = line.length(); i > 0; i = i - 3)
            {
                if(i - 3 < 0)
                {
                    splits[index] = line.substring(0,i);
                }else{
                    splits[index] = line.substring(i - 3,i);
                }
                index --;

            }
            StringBuilder[] sbs = new StringBuilder[splits.length];
            for(int i = 0; i < sbs.length; i ++)
            {
                sbs[i] = new StringBuilder();
            }
            Map<String,String> map = new HashMap<>();
            map.put("0","zero");
            map.put("1","one");
            map.put("2","two");
            map.put("3","three");
            map.put("4","four");
            map.put("5","five");
            map.put("6","six");
            map.put("7","seven");
            map.put("8","eight");
            map.put("9","nine");
            map.put("10","ten");
            map.put("11","eleven");
            map.put("12","twelve");
            map.put("13","thirteen");
            map.put("14","fourteen");
            map.put("15","fifteen");
            map.put("16","sixteen");
            map.put("17","seventeen");
            map.put("18","eighteen");
            map.put("19","nineteen");

            Map<String,String> map1 = new HashMap<>();
            map1.put("2","twenty");
            map1.put("3","thirty");
            map1.put("4","forty");
            map1.put("5","fifty");
            map1.put("6","sixty");
            map1.put("7","seventy");
            map1.put("8","eighty");
            map1.put("9","ninety");
            StringBuilder res = new StringBuilder();
            for(int i = 0; i < splits.length; i ++)
            {
                String item = splits[i];
                if(item.length() == 1)
                {
                    String val = map.get(item);
                    sbs[i].append(val);
                }else if(item.length() == 2)
                {
                    if(item.charAt(0) == '1')
                    {
                        String val = map.get(item);
                        sbs[i].append(val);
                    }else if(item.charAt(0) >= '2')
                    {
                        sbs[i].append(map1.get(String.valueOf(item.charAt(0))));
                        if(item.charAt(1) != '0'){
                         sbs[i].append(" " + map.get(String.valueOf(item.charAt(1))));
                        }
                    }

                }else if(item.length() == 3)
                {
                    boolean flag = false;
                    if(item.charAt(0) != '0')
                    {
                        sbs[i].append(map.get(String.valueOf(item.charAt(0))) + " hundred");
                        flag = true;
                    }
                    if(item.charAt(1) == '0')
                    {
                        if(item.charAt(2) != '0')
                        {
                            if(flag)
                            {
                                sbs[i].append(" and " + map.get(String.valueOf(item.charAt(2))));
                            }else{
                                sbs[i].append(map.get(String.valueOf(item.charAt(2))));
                            }

                        }
                    }else if(item.charAt(1) == '1')
                    {
                        String val = map.get(item.substring(1,item.length()));
                        if(flag)
                        {
                            sbs[i].append(" and " + val);
                        }else{
                            sbs[i].append(val);
                        }

                    }else if(item.charAt(1) >= '2')
                    {
                        if(flag)
                        {
                            sbs[i].append(" and " + map1.get(String.valueOf(item.charAt(1))));
                        }else{
                            sbs[i].append(map1.get(String.valueOf(item.charAt(1))));
                        }

                        if(item.charAt(2) != '0'){
                            sbs[i].append(" " + map.get(String.valueOf(item.charAt(2))));
                        }
                    }
                }
                if(splits.length - i == 4){
                    sbs[i].append(" billion");
                }else if(splits.length - i == 3)
                {
                    sbs[i].append(" million");
                }else if(splits.length - i == 2)
                {
                    sbs[i].append(" thousand");
                }
            }
            for(int i = 0; i < sbs.length; i ++)
            {
               System.out.print(sbs[i] + " ");
            }

        }
    }
}

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

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