
思路:
- 对于每一个学生的评价,使用 split 方法提取评价中的每一个字符,然后逐个判断是否是正面或者负面词汇来计算分数
- 对id按照要求进行排序。
- 为了加快字符的正负判断速度,先将 positive 和 negative 两个列表转化为 set 这样就可以实现 O(1) 的查询效率。
class Solution:
def topStudents(self, positive_feedback: List[str], negative_feedback: List[str], report: List[str], student_id: List[int], k: int) -> List[int]:
score = {}
positive_feedback = set(positive_feedback)
negative_feedback = set(negative_feedback)
for re, id in zip(report, student_id):
sc = 0
for t in re.split():
if t in positive_feedback:
sc += 3
elif t in negative_feedback:
sc -= 1
score[id] = sc
student_id.sort(reverse=True, key=lambda x:(score[x], -x))
return student_id[:k]






![2023年中国非血管介入手术无源耗材发展现状、竞争格局及行业市场规模[图]](https://img-blog.csdnimg.cn/img_convert/94f23c2d8786548fe882c4946b0a6b8f.png)












