2021秋招部分笔试题汇总

时长:120分钟 总分:100分

271浏览 2人已完成答题

题型介绍
题型 填空题
数量 6
1.
罗马数字转整数
问题详情

罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。

字符          数值
I             1
V             5
X             10
L             50
C             100
D             500
M             1000
例如, 罗马数字 2 写做 II ,即为两个并列的 1。12 写做 XII ,即为 X + II 。 27 写做  XXVII, 即为 XX + V + II 。

通常情况下,罗马数字中小的数字在大的数字的右边。但也存在特例,例如 4 不写做 IIII,而是 IV。数字 1 在数字 5 的左边,所表示的数等于大数 5 减小数 1 得到的数值 4 。同样地,数字 9 表示为 IX。这个特殊的规则只适用于以下六种情况:

I 可以放在 V (5) 和 X (10) 的左边,来表示 4 和 9。
X 可以放在 L (50) 和 C (100) 的左边,来表示 40 和 90。 

C 可以放在 D (500) 和 M (1000) 的左边,来表示 400 和 900。

给定一个罗马数字,将其转换成整数。输入确保在 1 到 3999 的范围内。

2.
字符串命名转换
问题详情

孔乙己说“回”字有四种写法,编程语言中常见的命名风格有如下四种:
 - 全部首字母大写
 - 第一个单词首字母小写,其余单词首字母大写
 - 单词全部小写,由下划线连接
 - 单词全部小写,由减号连接

请设计并实现一个caseTransform函数,使得一个字符串str可以被方便地转成四种形式,并且将四种形式通过空格拼接成一个字符串返回
为方便起见,这里假设输入字符串全部符合以上四种形式的英文字母组合 输入描述:
PascalCaseTest
输入样例: PascalCaseTest 输出描述: PascalCaseTest  pascalCaseTest  pascal_case_test pascal-case-test输出样例 PascalCaseTest pascalCaseTest pascal_case_test pascal-case-test
3.
字符串算术运算
问题详情

给定一个字符串式子,返回它的计算结果。算术规则为: k*[encoded_string],表示其中方括号内部的 encoded_string 正好重复 k 次。注意 k 保证为正整数。e.g. s = "3*[a2*[c]]", 返回 “accaccacc”
4.
查找二叉搜索树的叶子节点
问题详情

给一个二叉查找树(Binary Search Tree)的前序遍历结果数组,打印出所有的叶子节点。

输入描述:

输入为二叉查找树的前序遍历结果数组,元素之间用空格分隔:

9 8 7 10

输入样例: 9 8 7 10 输出描述:

所有的叶子节点元素,用空格分隔

解释:因为二叉搜索树的表示为:

       9

   8    10

7

输出的叶子节点为: 7 10

输出样例 7 10
5.
有效的括号字符串
问题详情

给定一个只包含三种字符的字符串:( ,) 和 *,写一个函数来检验这个字符串是否为有效字符串。有效字符串具有如下规则:
  1. 任何左括号 ( 必须有相应的右括号 )。
  2. 任何右括号 ) 必须有相应的左括号 ( 。
  3. 左括号 ( 必须在对应的右括号之前 )。
  4. * 可以被视为单个右括号 ) ,或单个左括号 ( ,或一个空字符串。
  5. 一个空字符串也被视为有效字符串。
6.
以组为单位翻转单向链表
问题详情

给一个单向链表以及整数N,使得每N个元素为一组进行翻转。要求时间复杂度O(n), 空间复杂度O(1)。