设计一个验证系统(滴滴)
解题思路:
map 实现要比 object 实现 效率高;
代码实现:
TS
JS
class AuthenticationManager {
timeToLive: number;
manager: Map<string, number>;
constructor(timeToLive: number) {
// 过期时长
this.timeToLive = timeToLive;
// 存储 tokenId
this.manager = new Map();
}
generate(tokenId: string, currentTime: number): void {
this.manager.set(tokenId, currentTime);
}
renew(tokenId: string, currentTime: number): void {
if (this.manager.has(tokenId)) {
let time = this.manager.get(tokenId);
if (time + this.timeToLive > currentTime) {
this.manager.set(tokenId, currentTime);
}
}
}
countUnexpiredTokens(currentTime: number): number {
let result = 0;
for (const time of this.manager.values()) {
time + this.timeToLive > currentTime && ++result;
}
return result;
}
}
var AuthenticationManager = function (timeToLive) {
// 过期时长
this.timeToLive = timeToLive;
// 存储 tokenId
this.manager = new Map();
};
AuthenticationManager.prototype.generate = function (tokenId, currentTime) {
this.manager.set(tokenId, currentTime);
};
AuthenticationManager.prototype.renew = function (tokenId, currentTime) {
if (this.manager.has(tokenId)) {
let time = this.manager.get(tokenId);
if (time + this.timeToLive > currentTime) {
this.manager.set(tokenId, currentTime)
}
}
};
AuthenticationManager.prototype.countUnexpiredTokens = function (currentTime) {
let result = 0;
for (const time of this.manager.values()) {
(time + this.timeToLive > currentTime) && ++result;
}
return result;
};
打赏作者
您的打赏是我前进的动力
微信
支付宝
1472.设计浏览器历史记录(字节)
上一篇
评论