360菜鸡笔试求解答

1.合法问卷问题,卡在45%。。。我不明白
2.数组操作,1是交换最后一个和最前一个,2是两两交换,超时,我自闭了/。。。
题1
# 输入第一行包含一个正整数n,表示收到的问卷数量。(1<=n<=2000) 
#如果名字仅由大小写英文字母组成且长度不超过10 # 接下来有n行,每行有一个由大小写英文字母,数字,下划线组成的字符串,
#分别表示一份问卷的名字,字符串长度不超过100。 
import re
regex = re.compile(r'[a-zA-Z]+')
num = int(input().strip())
result = 0
for i in range(num):
    s = input()
    if s and len(s)<=10 and re.match(regex,s).group()==s:
        result += 1
print(result)
题2

def process1(a):
    new = a.pop(0)
    a.append(new)
    return a
def process2(a):
    for i in range(0,len(a),2):
        a[i],a[i+1]=a[i+1],a[i]
    return a
N,M = (input().split())
a = [str(i) for i in range(1,int(N)+1)]
process = input().split()
for i in range(int(M)):
    if process[i]=='1':
        a = process1(a)
    else:
        a = process2(a)
print(' '.join(a))

#360公司##笔试题型#
全部评论
第二题加个M>10000:输出原文,能缓解超时
1 回复
分享
发布于 2020-08-22 21:02
第一题100%,为啥要正则。。 n = int(input().strip()) def judge(s):     if len(s) > 10:         return False     for si in s:         if not si.isalpha():             return False     return True count = 0 for _ in range(n):     line = input()     line = line.strip().replace('\n&(392)#39;, '')     if judge(line):         count += 1 print(count)
点赞 回复
分享
发布于 2020-08-22 21:00
滴滴
校招火热招聘中
官网直投
第二题你直接模拟的话,肯定会超时的啊,你想想连续出现两次2,是不是压根不用交换啊。而且队首弹出加入队尾这个过程,明显是可以简化为循环队列,只要指针移动就行了。。
点赞 回复
分享
发布于 2020-08-22 21:03

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务