- 1
- 0
- 约7.06千字
- 约 18页
- 2026-03-12 发布于福建
- 举报
第PAGE页共NUMPAGES页
2026年美团后端技术面试题及答案详解
一、编程题(共5题,每题20分,总分100分)
1.(20分)
题目:
编写一个函数,输入一个正整数`n`,返回一个列表,其中包含从`1`到`n`的所有数字,但将所有数字中的`3`替换为`e`,`5`替换为`s`,`7`替换为`g`。例如,输入`35`,输出`[e,s]`;输入`73`,输出`[g,e]`。
答案:
python
deftransform_numbers(n):
result=[]
foriinrange(1,n+1):
temp=
fordigitinstr(i):
ifdigit==3:
temp+=e
elifdigit==5:
temp+=s
elifdigit==7:
temp+=g
else:
temp+=digit
result.append(temp)
returnresult
示例
print(transform_numbers(35))#输出:[e,s]
print(transform_numbers(73))#输出:[g,e]
解析:
通过遍历从`1`到`n`的每个数字,将数字转换为字符串,然后逐位检查是否为`3`、`5`或`7`,并替换为对应的字符。最后将处理后的字符串添加到结果列表中。这种方法简单直观,适用于小规模输入。
2.(20分)
题目:
给定一个字符串`s`,其中包含多个单词,单词之间由空格分隔。编写一个函数,将字符串中的每个单词按字典序排序,但保持空格分隔的顺序不变。例如,输入`applebananacherry`,输出`applebananacherry`(原顺序不变,因为所有单词已按字典序排序)。
答案:
python
defsort_words(s):
words=s.split()
sorted_words=sorted(words)
return.join(sorted_words)
示例
print(sort_words(applebananacherry))#输出:applebananacherry
print(sort_words(bananaapplecherry))#输出:applebananacherry
解析:
首先将字符串按空格分割成单词列表,然后使用`sorted`函数对单词列表进行字典序排序,最后将排序后的单词列表重新连接成字符串。这种方法利用了Python内置的排序功能,简洁高效。
3.(20分)
题目:
设计一个无重复元素的集合`Set`,支持以下操作:
-`add(x)`:向集合中添加元素`x`,如果`x`已存在则不重复添加。
-`remove(x)`:从集合中删除元素`x`,如果`x`不存在则不执行操作。
-`contains(x)`:检查集合中是否包含元素`x`,返回布尔值。
要求实现上述功能,并说明时间复杂度。
答案:
python
classMySet:
def__init__(self):
self.set=set()
defadd(self,x):
self.set.add(x)
defremove(self,x):
self.set.discard(x)
defcontains(self,x):
returnxinself.set
示例
s=MySet()
s.add(1)
s.add(2)
print(s.contains(1))#输出:True
s.remove(1)
print(s.contains(1))#输出:False
解析:
使用Python内置的`set`数据结构实现,`add`和`contains`操作的时间复杂度为O(1),`remove`操作也是O(1)。`set`底层基于哈希表实现,因此这些操作都非常高效。
4.(20分)
题目:
给定一个整数数组`nums`,其中可能有重复元素,返回该数组所有可能的子集(不包含空集)。例如,输入`[1,2,2]`,输出`[[1],[2],[1,2],[1,2],[2]]`。
答案:
python
defsubsets_with_duplicates(nums):
nums.sort()
result=[]
subset=[]
defbacktrack(start):
result.append(subset.copy())
foriinrange(start,len(nums)):
ifistartandnums[i]==nums[i
原创力文档

文档评论(0)