华为优招笔试题

一、报文翻译

输入一行报文,每个数据都是十六进制格式,且以空格隔开,第一个元素是报文长度;
翻译规则是:将“A”翻译成“12”和“34”,将“B”翻译成“AB”和“CD”;
输出转换后的报文长度以及报文内容

public class hwyz1 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        while(sc.hasNext()) {
            String[] ss = sc.nextLine().split(" ");
            int n = Integer.parseInt(ss[0], 16);
            ArrayList<String> arr = new ArrayList<>();
            for (int i = 1; i <= n; i++) {
                String s = ss[i];
                if (s.equals("A")) {
                    arr.add("12");
                    arr.add("34");
                }else if (s.equals("B")) {
                    arr.add("AB");
                    arr.add("CD");
                }else {
                    arr.add(s);
                }
            }

            System.out.print(Integer.toString(arr.size(), 16).toUpperCase() + " ");
            for (String s : arr) {
                System.out.print(s + " ");
            }
        }
    }
}

注意:输出的长度数据要以十六进制输出,且大写!

二、找质数相关的一道题

给定一个数据范围,找出范围内的所有质数,将这些质数的个位数相加得到m,将这些质数的十位数相加得到n,输出较小的那一个

public class hwyz2 {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        int min = in.nextInt();
        int max = in.nextInt();
        int m10 = 0;
        int m1 = 0;

        for (int ii = min; ii < max; ii++) {
            if (isRightNum(ii)) {
                System.out.println("sushu: "+ii);
                int temp = ii%10;
                m1 += temp;
                m10 += (ii%100 - temp)/10;
            }
        }

        System.out.println(Math.min(m10, m1));
    }

    //判断是不是质数,用了孪生素数的方式
    //所有大于等于5的质数,都满足(6k+1)或(6k-1)
    public static boolean isRightNum(int numb) {
        if (numb == 2 || numb == 3) {
            return true;
        }

        if (numb%6 != 1 && numb%6 != 5) {
            return false;
        }

        int tmp = (int)Math.sqrt(numb);
        for (int i = 5; i <= tmp; i += 6) {
            if (numb%i == 0 || numb%(i+2) == 0) {
                return false;
            }
        }
        return true;
    }
}

三、收到群聊消息的总人数

先输入发消息的人的名称,再输入多个数组代表多个群聊以及群中的人数,问一共有多少人收到这条消息?
构造图,再根据起点进行DFS计算顶点数量,这种解法通过率只有50%

全部评论

相关推荐

下北泽:都是校友,还是同届,我就说直白点,不委婉了,我相信你应该也不是个玻璃心,首先你觉得一个双非的绩点写简历上有用吗?班长职务有用吗?ccf有用吗?企业会关心你高数满分与否吗?第二,第一个项目实在太烂,一眼就能看出是外卖,还是毫无包装的外卖,使用JWT来鉴权,把热点数据放进Redis这两个点居然还能写进简历里,说难听点这两个东西都是学个几十分钟,调用个API就能完成的事情,在双非一本的条件下,这种项目你觉得能拿出手吗,第二个项目你写的东西和你的求职方向有任何的匹配吗?第三,计设那一块毫无价值,如果想突出自己会前端,直接写入专业技能不行吗,最后,专业技能里像深入理解JVM底层原理这种你觉得这句话你自己真的能匹配吗?都是校友加上同届,我措辞直接,但希望能点出你的问题,想进大厂还得继续沉淀项目和学习
点赞 评论 收藏
分享
评论
点赞
1
分享

创作者周榜

更多
牛客网
牛客企业服务