题解 | #学英语#

学英语

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


}

全部评论

相关推荐

白火同学:1、简历可以浓缩成一页,简历简历先要“简”方便HR快速过滤出有效信息,再要“历”用有效信息突出个人的含金量。 2、教育背景少了入学时间~毕业时间,HR判断不出你是否为应届生。 3、如果你的平台账号效果还不错,可以把账号超链接或者用户名贴到对应位置,一是方便HR知道你是具体做了什么内容的运营,看到账号一目了然,二是口说无凭,账号为证,这更有说服力。
面试被问期望薪资时该如何...
点赞 评论 收藏
分享
02-25 09:55
已编辑
门头沟学院 Java
2.4&nbsp;一面2.6&nbsp;二面2.9&nbsp;三面(hr面)2.13&nbsp;oc1.15号收到面试电话那会就开始准备,因为一开始没底所以选择推迟一段时间面试,之后开始准备八股,准备实习可能会问的东西,这期间hot100过了有六七遍,真的是做吐了快,八股也是背了忘,忘了背,面经也看了很多,虽然最后用上的只有几道题,可是谁知道会问什么呢自从大二上开始学java以来,一开始做外卖,点评,学微服务,大二下五六月时,开始投简历,哎,投了一千份了无音讯,开始怀疑自己(虽然能力确实很一般),后来去到一家小小厂,但是并不能学到什么东西,而且很多东西都很不规范,没待多久便离开,大二暑假基本上摆烂很怀疑自己,大三上因为某些原因开始继续学,期间也受到一俩个中小厂的offer,不过学校不知道为啥又不允许中小厂实习只允许大厂加上待遇不太好所以也没去,感觉自己后端能力很一般,于是便打算转战测开,学习了一些比较简单的测试理论(没有很深入的学),然后十二月又开始继续投,java和测开都投,不过好像并没有几个面试,有点打击不过并没有放弃心里还是想争一口气,一月初因为学校事比较多加上考试便有几天没有继续投,10号放假后便继续,想着放假应该很多人辞职可能机会大一点,直到接到字节的面试,心里挺激动的,总算有大厂面试了,虽然很开心,但同时压力也很大,心里真的很想很想很想进,一面前几天晚上都睡不好觉,基本上都是二三点睡六七点醒了,一面三十几分钟结束,问的都不太难,而且面试官人挺好但是有些问题问的很刁钻问到了测试的一些思想并不是理论,我不太了解这方面,但是也会给我讲一讲他的理解,但是面完很伤心觉得自己要挂了。但是幸运的是一面过了(感谢面试官),两天后二面,问的同样不算难,手撕也比较简单,但也有一两个没答出来,面试官人很好并没有追问,因为是周五进行的二面,没有立即出结果,等到周一才通知到过了,很煎熬的两天,根本睡不好,好在下周一终于通知二面过了(感谢面试官),然后约第二天三面,听别的字节同学说hr面基本上是谈薪资了,但是我的并不是,hr还问了业务相关的问题,不过问的比较浅,hr还问我好像比较紧张,而且hr明确说了还要比较一下,我说我有几家的面试都拒了就在等字节的面试,三面完后就开始等结果,这几天干啥都没什么劲,等的好煎熬,终于13号下午接到了电话通知oc了,正式邮件也同时发了,接到以后真的不敢信,很激动但更重要的是可以松一口气了,可以安心的休息一下了终于可以带着个好消息过年了,找实习也可以稍微告一段落了,虽然本人很菜,但是感谢字节收留,成为忠诚的节孝子了因为问的比较简单,面经就挑几个记得的写一下一面:1.实习项目的难点说一下2.实习中用到了哪些测试方法3.针对抖音评论设计一下测试用例4.手撕:合并两个有序数组二面:1.为什么转测开2.线程进程区别,什么场景适合用哪个3.发送一个朋友圈,从发出到别人看到,从数据流转的角度说一下会经历哪些过程4.针对抖音刷到广告视频设计测试用例5.手撕:无重复字符的最长字串
厂办龚彪:锲而不舍 金石可镂
查看8道真题和解析
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

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