📅  最后修改于: 2023-12-03 15:42:13.461000             🧑  作者: Mango
本篇主要介绍GATE CS Mock 2018年第35章的相关内容,主要内容如下:
有一扇门,密码为一个长度不超过1K的字符串,门上有一些键,可以用来输入密码。其中,键的有效编号为1到1000之间的整数。如果密码中包含指定的数字,则表示这些数字已被正确输入。 程序需要实现如下接口:
class Door:
def __init__(self, password: str, nums: List[int]):
"""
password: string, the correct password.
nums: List[int], a list of integers.
"""
def press(self, key: int) -> bool:
"""
Press a key and return True if the password is correct, otherwise False.
"""
为了实现这个接口,我们可以考虑用一个集合来存储正确输入的数字。初始化时,将正确输入的数字存储在集合中。每次按下一个键后,检查当前键是否为正确的密码中的数字。如果是,则将该数字从集合中移除。最后,如果集合为空,则表示密码正确。
class Door:
def __init__(self, password: str, nums: List[int]):
self.correct_nums = set([int(num) for num in password])
self.nums = set(nums)
def press(self, key: int) -> bool:
if key in self.correct_nums:
self.correct_nums.remove(key)
self.nums.add(key)
return not self.correct_nums
代码中,构造函数中初始化了correct_nums和nums两个集合。correct_nums是密码中正确的数字;nums是已经按过的键的集合。
press函数按下一个键后,会先检查当前键是否为密码中正确的数字。如果是,则将该数字从correct_nums中移除。最后,判断correct_nums是否为空,如果为空则表示密码已正确输入。如果不为空,表示密码还未完成,继续等待输入。
本文介绍了GATE CS Mock 2018年第35章的相关内容,主要介绍了一个门的密码功能的实现方法,需要用到集合的操作。同时,本文也展示了Python语言实现相关接口的代码。