字节跳动2019春招研发部分编程题汇总(python版本)共7题
需积分: 0 183 浏览量
更新于2020-12-21
收藏 572KB PDF 举报
1、万万没想到之聪明的编辑
题目描述:
题解:
双指针法
按照题目要求的规则来编写程序,不要忘记处理输入和输出
import sys
n=int(input())#读第一行
for i in range(n):
#s = list(input())
s = list(sys.stdin.readline().strip())#读一行的字符串,转化为list
k = 0 #每个循环都重新赋值。设置一个指针,检查是否有重复
for j in range(len(s)):
s[k] = s[j]#赋值,如果有重复,将后面的赋值给前面的
【字节跳动2019春招研发部分编程题汇总(python版本)共7题】
这是一系列针对字节跳动2019春季招聘研发岗位的编程题目,主要涉及Python语言。以下是对其中几道题目的解析:
1、**万万没想到之聪明的编辑**
题目要求编写程序,根据特定规则处理字符串。使用双指针法解决此问题。程序首先通过`sys.stdin.readline().strip()`读取一行字符串,并将其转换为列表。设置一个指针`k`,遍历列表时,如果发现重复字符,将后面的字符赋值给前面的字符。同时,处理重复情况,如连续3个或AABB形式的重复字符,需要删除最后一个。输出处理后的字符串。
```python
import sys
n = int(input())
for i in range(n):
s = list(sys.stdin.readline().strip())
k = 0
for j in range(len(s)):
s[k] = s[j]
k += 1
# 处理重复情况
while k > 2 and s[k-3] == s[k-2] and s[k-2] == s[k-1]:
k -= 1
while k > 3 and s[k-4] == s[k-3] and s[k-2] == s[k-1]:
k -= 1
print(''.join(s[:k]))
```
2、**万万没想到之抓捕孔连顺**
题目涉及到两个特工在不同建筑之间的布防策略。使用双指针法计算不同布防方案的数量。输入建筑物数量`n`和最大距离`dist`,接着获取所有建筑物的坐标。然后,用两个指针`i`和`j`分别表示第一个特工和另外两个特工最远位置的下标。遍历所有可能的组合,计算排列组合C(num, 2),并求和模99997867。
```python
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:
num = j - i - 1
res += num * (num - 1) // 2
i += 1
res %= 99997867
print(res)
```
3、**雀魂启动!**
这是一个麻将和牌判断问题。定义函数`IShepai`,判断给定的字符串是否能组成麻将牌。检查字符串长度,若为0则返回True(能和牌)。然后,通过计数判断是否存在雀头、刻子或顺子。如果满足这些条件之一,返回True;否则返回False。
```python
def IShepai(str):
lenth = len(str)
if lenth == 0:
return True
count1 = str.count(str[0])
# ... 其他判断条件和处理逻辑 ...
if __name__ == '__main__':
a = list(map(int, input().split()))
flag = 0
for i in range(1, 10):
al = sorted(a + [i])
if al.count(i) > 4:
continue
else:
if IShepai(al) == True:
flag = 1
print(i, end=" ")
if flag == 0:
print(0)
```
4、**特征提取**
这道题要求计算视频帧中猫咪特征连续出现的最长长度。通过输入的测试用例数量`n`,逐个处理每个视频帧。使用字典`d`记录特征值及其连续出现的次数,遍历每帧,计算连续特征值,并更新结果`res`。
```python
n = int(input())
while n > 0:
m = int(input())
res = 1
d = {}
for i in range(m):
l = list(map(int, input().split()))
k = l[0]
tmp_d = {}
for j in range(k):
index = l[2 * j + 1] * 10 + l[2 * j + 2]
if index in tmp_d:
tmp_d[index] += 1
else:
tmp_d[index] = 1
if index in d:
d[index] = max(d[index], tmp_d[index])
else:
d[index] = tmp_d[index]
res = max(res, max(d.values()))
n -= 1
print(res)
```
这些题目涵盖了Python的基础语法,如输入输出、数据类型操作、循环与条件判断、字符串处理、数组操作、函数定义以及算法应用(双指针法、计数法等),对于面试者来说,它们旨在考察解决问题的能力、代码实现的效率和清晰度。
weixin_38668160
- 粉丝: 10
- 资源: 935
最新资源
- 俞敏洪:企业的文化基因需要一开始就注入.docx
- 政钧企业文化诊断学之 :企业家个人文化力不足.docx
- STM32串口下载软件(FLYMCU)
- 红枣疏花机(含工程图sw18可编辑+cad)全套技术开发资料100%好用.zip
- 基于web的网上演唱会票务管理系统.doc
- Python面向对象.xmind
- 中职学校《Windows Server网络操作系统》课程标准及教学指导(2024年版)
- 基于java的物流信息网的设计与实现论文.doc
- 中职学校《Java程序设计》课程标准及教学指导(2024年版)
- Python面向对象进阶.xmind
- 中职学校《Android Studio程序设计》课程标准及教学指导(2024年版)
- ReST-MCTS∗: LLM Self-Training via Process Reward Guided Tree Search
- 基于java的音乐交流平台论文.doc
- pptssssssss
- 中职学校《物联网网关Qt程序编写》课程标准及教学指导(2024年版)
- 基于web的银行业务管理系统.doc