美团8.27笔试

神奇字符

题目描述: 小美在摆弄她的字符串。最近小团送了小美一个特殊字符 ' * ',这个字符可以和其他所有字符匹配,除了这个字符外,其他字符只能自己和自己匹配。 小美先前有一个字符串S,长度为n,现在她又新组合了一个可有特殊字符 ' * ' 的字符串s,长度为m小美想知道有多少个位置 i,使得S[i+j]s[j]对于1≤j≤m均能匹配上?其中X[y]代表字符串X中第y位的字符。  输入描述 第一行两个空格隔开的正整数nm,分别表示字符串S和字符串s的长度。  接下来一行长度为n的仅包含小写英文字母的字符串S  接下来一行长度为m的包含小写英文字母以及特殊字符 ' * ' 的字符串s  对于所有数据,1≤m≤n≤2000  输出描述 输出一行一个整数,表示满足要求的位置数量
n, m = map(int, input().strip().split())
str1 = list(map(str, input().strip().split()))[0]
str2 = list(map(str, input().strip().split()))[0]
pos = 0
def isValid(str1, str2):
    for i in range(m):
        if str2[i] == '*':
            continue
        if str1[i] != str2[i]:
            return False
    return True
pos = 0
if n < m:
    print(pos)
else:
    for i in range(n-m+1):
        if isValid(str1[i:i+m], str2):
            pos += 1
            print(str1[i:i+m])
    print(pos)

挑剔

''' 小美有一个精致的珠宝链子。初始这个链子上有n个宝石,从左到右分别编号为1~n (宝石上的编号不会因为交换位置而改变编号)。 接着,小美为了美观对这个项链进行微调,有m次操作,每次选择一个编号 x ,将编号 x 的宝石放到最左边(不改变其他宝石的相对位置)。 小美想知道,所有操作完成后最终链子从左到右宝石编号是多少。  输入描述 第一行两个正整数nm,分别表示链子上的宝石数和操作次数。  接下来一行m个数 x1,x2,...,xm ,依次表示每次操作选择的编号x值。  数字间两两有空格隔开  对于所有数据,1≤m,n≤50000, 1≤xi≤n  输出描述 输出一行 n 个整数,表示答案。 '''
n, m = map(int, input().strip().split())
operator = list(map(int, input().strip().split()))
# print(operator)
ori_arr = list(range(1, n+1))
res = operator[::-1]
# for num in ori_arr:
#     if num not in res:
#         res.append(num)
# print(res)
tmp = [i for i in ori_arr if i not in res]
res = res + tmp
res = list(map(str, res))
print("".join(res))

裁缝

''' 小团最近获得了美美团团国的裁缝资格证,成为了一个裁缝!现在小团有一个长度为n的大布料S(在这个国家布料其实是一个仅包含小写英文字母的字符串), 小团可以将布料在任意位置剪切,例如布料abcd可以被裁剪为abcd abcdabcd ,不过,裁剪完之后是不能拼接起来的,因为小团还不是很擅长拼接布料。 现在小团想知道能不能有一种裁剪方式能让他把布料恰好裁剪成客人要求的小布料。  形式化地,有一个串S,问是否能将其划分成m个不相交的连续子串,使得这些连续子串可以与要求的连续子串一 一对应。 两个串相对应是指这两个串完全相等。例如"aab"="aab"  "aab"≠"baa"  输入描述 第一行两个空格隔开的正整数nm,分别表示大布料S长度和客人要求的小布料数量。  接下来一行一个长度为n的仅包含小写英文字母的串S,表示大布料的组成。  接下来一行m个空格隔开的数x1,x2, ...,xm ,依次表示所要求的小布料长度。  接下来开始m行,每行一个长度为xi的仅包含小写英文字母的串si,表示第i个小布料的组成。  对于所有数据,  输出描述 如果存在这样的方案,输出方案总数。如果不存在任何方案,输出0。两个方案AB不相同当且仅当方案A中存在一个相对于原始长布料的裁剪位置i,而方案B中并未在该位置i裁剪。  例如aaaaaa 裁剪方案aaa|aaa 与方案 aaa|aaa是相同的方案。而方案aa|aaaa与方案aaaa|aa是不同的方案,虽然划分出的结果都是aaaaaa但前者在第二个a处进行了裁剪,后者并没有在这里进行裁剪,所以视为不同的裁剪方案。 '''
from collections import Counter
n, m = map(int, input().strip().split())
str_long = list(map(str, input().strip().split()))[0]
arr_s = list(map(int, input().strip().split()))
bu_s = []
for i in range(m):
    bu_s.append(list(map(str, input().strip().split()))[0])
# print(bu_s)
def isValid(s1, s2):
    return Counter(s1) == Counter(s2)
res = []
path = []
def backtrace(s1, path, startidx):
    if startidx>len(s1):
        return
    if len(path)==m and isValid(path, bu_s):
        res.append(path[:])
    for i in range(startidx, len(s1)):
        path.append(s1[startidx:i + 1])
        backtrace(s1, path, i + 1)
        path.pop()
backtrace(str_long, path, 0)
print(len(res))

下雨

''' 题目描述: 小团正忙着用机器人收衣服!因为快要下雨了,小团找来了不少机器人帮忙收衣服。他有n件衣服从左到右成一行排列,所在位置分别为1~n在每个位置上已经有一个就绪的机器人可以帮忙收衣服,但第 i 个位置上的机器人需要pi的电量来启动,然后这个机器人会用ti的时间收衣服, 当它收完当前衣服后,会尝试去收紧邻的右边的一件衣服(如果存在的话),即 i+1处的衣服,如果 i+1 处的衣服已经被其他机器人收了或者其他机器人正在收,这个机器人就会进入休眠状态,不再收衣服。不过如果机器人没有休眠,它会同样以ti时间来收这件 i+1 处的衣服(注意,不是ti+1的时间,收衣服的时间为每个机器人固有属性),然后它会做同样的检测来看能否继续收 i+2 处的衣服,一直直到它进入休眠状态或者右边没有衣服可以收了。形象地来说,机器人会一直尝试往右边收衣服,收k件的话就耗费k*ti的时间,但是当它遇见其他机器人工作的痕迹,就会认为后面的事情它不用管了,开始摸鱼,进入休眠状态。  小团手里总共有电量b,他准备在0时刻的时候将所有他想启动的机器人全部一起启动,过后不再启动新的机器人,并且启动的机器人的电量之和不大于b他想知道在最佳选择的情况下,最快多久能收完衣服。若无论如何怎样都收不完衣服,输出-1输入描述 第一行两个正整数nb,分别表示衣服数量和小团持有电量。  接下来一行n个数 p1,p2, ...,pn ,含义如题所述,为机器人唤醒需求电量。  接下来一行n个数 t1,t2, ...,tn,含义如题所述,为机器人收衣服所需时间。  数字间两两有空格隔开。  对于所有数据,1≤n≤10001≤pi≤100, 1≤ti , b≤105  输出描述 输出最短所需时间。 '''

#美团笔试##秋招##互联网招聘#
全部评论
第二个方法解法根本不对好嘛
点赞 回复 分享
发布于 2022-08-29 18:03 广西
大佬能帮忙看一下第一道题我这样子写哪里有问题吗? n, m = [int(i) for i in input().split()] S = input() s = input() ans = 0 for i in range(0, len(S)-len(s)+1):     j = 0     while j < len(s) and (S[i+j] == s[j]&nbs***bsp;s[j] == '*&(30972)#39;):         j += 1     if j >= len(s):         # print(S[i:i+j])         ans += 1 print(ans)
1 回复 分享
发布于 2022-08-28 16:19 浙江
这个能通过多少?
点赞 回复 分享
发布于 2022-08-27 22:08 浙江

相关推荐

程序员花海:实习太简单了 学历可以的 实习描述应该是先介绍业务 再介绍技术 技术咋推动业务的 做到了啥收益 有没有做实验 实验组和对照组有什么不同 你最后学到了什么 有没有参与处理过线上问题 有没有参与过公司的code review 有没有参与过技术分享 这些都是可以在实习描述中写的 并且实习和项目不一样不会撞车 应该放在最前面 放在教育背景下面 另外项目有点烂大街 可以看下我主页的简历优化案例
秋招,不懂就问
点赞 评论 收藏
分享
评论
14
22
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务