• 这些大厂笔试题 你都见识(指被无情鞭挞)过了吗?—— 哔哩哔哩篇


    题目链接:

    哔哩哔哩2020校招


    一.复数乘法

    题目描述:

    输入两个表示复数的字符串,输出它们相乘的结果的字符串
    复数字符串用a+bi表示(a, b 为整数, i为虚数单位,i2=-1)

    输入描述:

    两个表示复数的字符串

    输出描述:

    输出a + bi形式的正确结果

    示例1:

    输入:
    1+2i
    2+1
    输出:
    0+5i

    例子说明:

    (1+2i)(2+i) = (2 + i + 4i + 2i * i) = 0 + 5i

    示例2:

    输入:
    1+ -2i
    3+4i
    输出:
    11+ -2i

    例子说明:

    (1+ -2i)(3+4i) = (3 + 4i - 6i - 8i * i) = 11+ -2i

    个人总结:

    写两个函数分别获取字符串的实部和虚部,然后根据计算规则计算出答案的实部和虚部,最后拼接字符串即可。

    代码实现:

    import java.util.*;
    
    public class Main {
        public static void main(String[] args) {
            Scanner sc = new Scanner(System.in);
            String s1 = sc.nextLine();
            String s2 = sc.nextLine();
            int real1 = getReal(s1);
            int image1 = getImage(s1);
            int real2 = getReal(s2);
            int image2 = getImage(s2);
            int real = real1 * real2 - image1 * image2;
            int image = real1 * image2 + real2 * image1;
            System.out.println(real + "+" + image + "i");
        }
    
        //实部也可能有负数 但是不写也过了 所以我就没改了 测试用例好像没这个
        public static int getReal(String s) {
            int res = 0;
            int idx = 0;
            while (s.charAt(idx) != '+') {
                res = res * 10 + s.charAt(idx++) - '0';
            }
            return res;
        }
    
        public static int getImage(String s) {
            int res = 0;
            int i = 0;
            while (s.charAt(i) != '+') {
                i++;
            }
            // i 下标对应 +
            i++;
            int flag = 1;
            for (; i < s.length(); i++) {
                char c = s.charAt(i);
                if (c == 'i') {
                    break;
                } else if (c == '-') {
                    flag = -1;
                } else {
                    res = res * 10 + c - '0';
                }
            }
            return flag * res;
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48

    二.一年中的第几天

    题目描述:

    输入一个"YYYY-MM-dd"格式的日期字符串,输出该天是当年的第几天(1 月 1 日是每年的第 1 天)

    输入描述:

    一个"YYYY-MM-dd"格式的表示日期的字符串

    输出描述:

    该天是当年的第几天

    示例1:

    输入:
    2019-01-09
    输出:
    9

    示例2:

    输入:
    2004-03-01
    输出:
    61

    个人总结:

    个人没想到的地方,在判断是闰年的语句里面,需要加一个判断月份是否大于二,如果不大于,则不进入if语句内部。

    代码实现:

    import java.util.*;
    
    public class Main {
        static int[] count = {0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334, 365};
    
        public static void main(String[] args) {
            Scanner sc = new Scanner(System.in);
            String s = sc.nextLine();
            int yy = Integer.parseInt(s.substring(0, 4));
            int mm = Integer.parseInt(s.substring(5, 7));
            int dd = Integer.parseInt(s.substring(8));
            int ans = count[mm - 1] + dd;
            if (isLeapYear(yy) && mm >= 2) {
                ans += 1;
            }
            System.out.println(ans);
        }
    
        public static boolean isLeapYear(int year) {
            if (year % 400 == 0 || (year % 100 != 0 && year % 4 == 0)) {
                return true;
            }
            return false;
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25

    三.k个一组翻转链表

    题目描述:

    给你一个链表,每 k 个节点一组进行翻转,请返回翻转后的链表。
    如果节点总数不是 k 的整数倍,那么请将最后剩余的节点保持原有顺序。
    示例 :
    给定这个链表:1->2->3->4->5
    当 k = 2 时,应当返回: 2->1->4->3->5
    当 k = 3 时,应当返回: 3->2->1->4->5

    输入描述:

    第一行:依次输入链表中的各个元素,以"#"结束
    第二行:每组数量k

    输出描述:

    处理后的链表中的各个元素,以"->"连接

    示例1:

    输入:
    1 2 3 4 5 #
    2
    输出:
    2->1->4->3->5

    示例2:

    输入:
    1 2 3 4 5 #
    3
    输出:
    3->2->1->4->5

    个人思路:

    个人没想到的地方是我直接将字符串转换成字符数组了,然后没注意到每个数字字符之间的空格,等于空格字符直接被我无视了,然后写着出了点问题。

    代码实现:

    import java.util.*;
    
    public class Main {
        public static void main(String[] args) {
            Scanner sc = new Scanner(System.in);
            String s = sc.nextLine();
            int k = sc.nextInt();
            String[] ss = s.split(" ");
            int len = 1;
            int end = 0;
            for (int i = 0; i < ss.length - 1; i++) {
                //len != k
                if (len != k) {
                    len++;
                } else {
                    //len == k
                    reverse(ss, end, i);
                    end = i + 1;
                    len = 1;
                }
            }
            //输出
            for (int i = 0; i < ss.length - 1; i++) {
                if (i != ss.length - 2) {
                    System.out.print(ss[i] + "->");
                } else {
                    System.out.print(ss[i]);
                }
            }
        }
    
        public static void reverse(String[] ss, int left, int right) {
            while (left < right) {
                String s = ss[left];
                ss[left] = ss[right];
                ss[right] = s;
                left++;
                right--;
            }
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
  • 相关阅读:
    揭秘一线大厂Redis面试高频考点(3万字长文、吐血整理)
    数字电路基础
    R语言作业--第六章判别分析
    SQL库函数
    使用Ruby编写通用爬虫程序
    云打印为什么这么便宜?
    2022年乐维 运维如诗 6.0系列产品震撼发布!
    【HCIA】动态路由协议分类、OSPF
    Python 的切片语法为什么不会出现索引越界呢?
    多商户商城系统功能拆解43讲-平台端应用-客服话术
  • 原文地址:https://blog.csdn.net/qq_53130059/article/details/128056961