设计一个验证系统(滴滴)

解题思路:

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;
};
打赏作者
您的打赏是我前进的动力
微信
支付宝
评论

中午好👏🏻,我是 ✍🏻   疯狂 codding 中...

粽子

这有关于前端开发的技术文档和你分享。

相信你可以在这里找到对你有用的知识和教程。

了解更多

目录

  1. 1. 设计一个验证系统(滴滴)
  2. 2. 解题思路:
  3. 3. 代码实现: