题解 | #学英语#

学英语

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

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.math.BigDecimal;
import java.math.BigInteger;
import java.text.DateFormat;
import java.text.DecimalFormat;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.temporal.ChronoUnit;
import java.util.*;
import java.util.function.Function;
import java.util.function.IntFunction;
import java.util.stream.Collectors;
import java.util.stream.IntStream;
import java.util.stream.Stream;

import static java.util.Arrays.*;
import static java.util.stream.Stream.*;


public class Main {
    public static void main(String[] args) throws IOException {

        testTh();
    }

    private static void testTh() throws IOException {
        BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
        String str;

        while ((str = bf.readLine()) != null) {
            String[] number = {"zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine"};
            String[] tenth = {"", "eleven", "twelve", "thirteen", "fourteen", "fifteen", "sixteen", "seventeen", "eighteen", "nineteen"};
            String[] tenRa = {"", "ten", "twenty", "thirty", "forty", "fifty", "sixty", "seventy", "eighty", "ninety"};
            String[] levelNumber = {"hundred", "thousand", "million", "billion", "and"};
            StringBuilder stringBuilder = new StringBuilder();
            if (str.length() <= 2) {
                String number1 = getNumberByStr(str,  number, tenth, tenRa);

                stringBuilder.append(number1);
                System.out.println(stringBuilder.toString());

            } else {
                int temp = (str.length() - 1) / 3;
                if (str.length() == 3) {
                    String extracted = extracted(str, number, tenth, tenRa, levelNumber);
                    System.out.println(extracted);
                } else if (temp == 1) {
                    String str1 = str.substring(0, str.length() - 3);
                    String str2 = str.substring(str.length() - 3);
                    if (str1.length() <= 2) {
                        String number1 = getNumberByStr(str1,  number, tenth, tenRa);
                        stringBuilder.append(number1).append(" ").append(levelNumber[1]).append(" ");

                        String extracted = extracted(str2, number, tenth, tenRa, levelNumber);
                        stringBuilder.append(extracted);
                        System.out.println(stringBuilder.toString());
                    } else {

                        String extracted = extracted(str1, number, tenth, tenRa, levelNumber);
                        String s = stringBuilder.append(extracted).append(" ").append(
                                       levelNumber[temp]).append(" ").toString();
                        stringBuilder.delete(0, stringBuilder.length());
                        String ben = extracted(str2, number, tenth, tenRa, levelNumber);
                        stringBuilder.append(s).append(ben);
                        System.out.println(stringBuilder.toString());
                    }
                } else if (temp == 2) {
                    String str1 = str.substring(0, str.length() - 6);
                    String str2 = str.substring(str.length() - 6, str.length() - 3);
                    String str3 = str.substring(str.length() - 3);
                    if (str1.length() == 1) {
                        String numberByStr = getNumberByStr(str1, number, tenth, tenRa);
                        stringBuilder.append(numberByStr).append(" ").append(
                            levelNumber[temp]).append(" ");
                    } else {
                        String extracted = extracted(str1, number, tenth, tenRa, levelNumber);
                        stringBuilder.append(extracted).append(" ").append(levelNumber[temp]);
                    }
                    String extracted = extracted(str2, number, tenth, tenRa, levelNumber);
                    stringBuilder.append(extracted).append(" ").append(levelNumber[temp -
                            1]).append(" ");

                    String ben = extracted(str3, number, tenth, tenRa, levelNumber);
                    stringBuilder.append(ben);
                    System.out.println(stringBuilder.toString());
                }
            }

        }
    }


    private static String extracted(String str, String[] number, String[] tenth,
                                    String[] tenRa, String[] levelNumber) {
        if (str.charAt(1) == '0' && str.charAt(2) == '0') {
            String substring = str.substring(0, 1);
            int parseInt = Integer.parseInt(substring);
            return  number[parseInt] + " " + "hundred";
        } else if (str.charAt(0) == '0' && str.charAt(1) == '0') {
            String substring = str.substring(2);
            int parseInt = Integer.parseInt(substring);
            return number[parseInt];
        } else if (str.charAt(0) == '0') {
            String str_ = str.substring(1);
            return   getNumberByStr(str_, number, tenth, tenRa);
        } else {
            String hundredNumberByStr = getHundredNumberByStr(0, levelNumber, number, str);
            str = str.substring(1);
            String number1 = getNumberByStr(str, number, tenth, tenRa);

            return  hundredNumberByStr + " " + number1;
        }
    }

    //两位数
    public static String  getNumberByStr(String str, String[] number,
                                         String[] tenth, String[] tenRa) {
        if (str.length() == 1)return number[Integer.parseInt(str)];
        if (str.charAt(1) == '0') {
            char c = str.charAt(0);
            return tenRa[Integer.parseInt(c + "")];
        }
        if (str.charAt(0) == '1') {
            char c = str.charAt(1);
            return tenth[Integer.parseInt(c + "")];
        }

        char c1 = str.charAt(0);
        char c2 = str.charAt(1);
        if (c1=='0')return number[Integer.parseInt(c2 + "")];
        return tenRa[Integer.parseInt(c1 + "")] + " " + number[Integer.parseInt(
                    c2 + "")];
    }
    //百位数

    public static String  getHundredNumberByStr(Integer integer,
            String[] levelNumber, String[] number, String str) {
        String substring = str.substring(0, 1);
        int parseInt = Integer.parseInt(substring);
        return number[parseInt] + " " + levelNumber[integer] + " and";
    }


}

全部评论

相关推荐

05-19 15:21
已编辑
华南农业大学 Java
白火同学:你才沟通了200,说实话,北上广深杭这里面你连一座城市的互联网公司都没投满呢,更别说还有各种准一线二线城市了。等你沟通突破了三位数,还没结果再考虑转行的事吧。
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

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