200字范文,内容丰富有趣,生活中的好帮手!
200字范文 > 字节跳动python面试题_字节跳动两道春招笔试题python解法

字节跳动python面试题_字节跳动两道春招笔试题python解法

时间:2023-03-13 13:17:49

相关推荐

字节跳动python面试题_字节跳动两道春招笔试题python解法

(一)万万没想到之聪明的编辑

我叫王大锤,是一家出版社的编辑。我负责校对投稿来的英文稿件,这份工作非常烦人,因为每天都要去修正无数的拼写错误。但是,优秀的人总能在平凡的工作中发现真理。我发现一个发现拼写错误的捷径:

1. 三个同样的字母连在一起,一定是拼写错误,去掉一个的就好啦:比如 helllo -> hello

2. 两对一样的字母(AABB型)连在一起,一定是拼写错误,去掉第二对的一个字母就好啦:比如 helloo -> hello

3. 上面的规则优先“从左到右”匹配,即如果是AABBCC,虽然AABB和BBCC都是错误拼写,应该优先考虑修复AABB,结果为AABCC

我特喵是个天才!我在蓝翔学过挖掘机和程序设计,按照这个原理写了一个自动校对器,工作效率从此起飞。用不了多久,我就会出任CEO,当上董事长,迎娶白富美,走上人生巅峰,想想都有点小激动呢!

……

万万没想到,我被开除了,临走时老板对我说: “做人做事要兢兢业业、勤勤恳恳、本本分分,人要是行,干一行行一行。一行行行行行;要是不行,干一行不行一行,一行不行行行不行。” 我现在整个人红红火火恍恍惚惚的……

请听题:请实现大锤的自动校对程序

输入描述:第一行包括一个数字N,表示本次用例包括多少个待校验的字符串。

后面跟随N行,每行为一个待校验的字符串。

输出描述:N行,每行包括一个被修复后的字符串。

输入例子:2

helloo

wooooooow

输出例子:hello

woow

思路:

遍历字符串,若符合判断条件则跳到下一次循环,不符合条件则将字符加到新字符串

代码:

n = int(input())

for i in range(n):

s = input()

res = []

for s0 in s:

if len(res) < 2:

res.append(s0)

continue

if len(res) >= 2:

if s0 == res[-1] and s0 == res[-2]:

continue

if len(res) >= 3:

if s0 == res[-1] and res[-2] == res[-3]:

continue

res.append(s0)

print("".join(res))

(二)万万没想到之抓捕孔连顺

我叫王大锤,是一名特工。我刚刚接到任务:在字节跳动大街进行埋伏,抓捕恐怖分子孔连顺。和我一起行动的还有另外两名特工,我提议

1. 我们在字节跳动大街的N个建筑中选定3个埋伏地点。

2. 为了相互照应,我们决定相距最远的两名特工间的距离不超过D。

我特喵是个天才! 经过精密的计算,我们从X种可行的埋伏方案中选择了一种。这个方案万无一失,颤抖吧,孔连顺!

……

万万没想到,计划还是失败了,孔连顺化妆成小龙女,混在cosplay的队伍中逃出了字节跳动大街。只怪他的伪装太成功了,就是杨过本人来了也发现不了的!

请听题:给定N(可选作为埋伏点的建筑物数)、D(相距最远的两名特工间的距离的最大值)以及可选建筑的坐标,计算在这次行动中,大锤的小队有多少种埋伏选择。

注意:

1. 两个特工不能埋伏在同一地点

2. 三个特工是等价的:即同样的位置组合(A, B, C) 只算一种埋伏方法,不能因“特工之间互换位置”而重复使用

输入描述:第一行包含空格分隔的两个数字 N和D(1 ≤ N ≤ 1000000; 1 ≤ D ≤ 1000000)

第二行包含N个建筑物的的位置,每个位置用一个整数(取值区间为[0, 1000000])表示,从小到大排列(将字节跳动大街看做一条数轴)

输出描述:一个数字,表示不同埋伏方案的数量。结果可能溢出,请对 99997867 取模

输入例子:4 3

1 2 3 4

输出例子:4

例子说明:可选方案 (1, 2, 3), (1, 2, 4), (1, 3, 4), (2, 3, 4)

思路:

设置两个指针,i指针为第一个特工的下标,j指针为另外两个特工最远位置的下标,依次遍历;根据排列组合,每个i指针对应的方案数为C(j-i,2),将所有方案数相加。

代码:

n, dist = map(int, input().split())

nums = list(map(int, input().split()))

res = 0

i = 0

j = 2

while i < n-2:

while j < n and nums[j] - nums[i] <= dist:

j += 1 #最后一次时会使j多加一次

if j - 1 - i >= 2:

num = j - i - 1

res += num * (num - 1) // 2

i += 1

res= res%99997867

print(res)

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。