[JavaScript 刷题] 哈希表 - 日志速率限制器, leetcode 359
Posted GoldenaArcher
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[JavaScript 刷题] 哈希表 - 日志速率限制器, leetcode 359相关的知识,希望对你有一定的参考价值。
[javascript 刷题] 哈希表 - 日志速率限制器, leetcode 359
github repo 地址: https://github.com/GoldenaArcher/js_leetcode,Github 的目录 大概 会更新的更勤快一些。
题目
如下:
Design a logger system that receives a stream of messages along with their timestamps. Each unique message should only be printed at most every 10 seconds (i.e. a message printed at timestamp
t
will prevent other identical messages from being printed until timestampt + 10
).All messages will come in chronological order. Several messages may arrive at the same timestamp.
Implement the
Logger
class:
Logger()
Initializes the logger object.bool shouldPrintMessage(int timestamp, string message)
Returnstrue
if themessage
should be printed in the giventimestamp
, otherwise returnsfalse
.
解题思路
依旧看一下这道题刚开始给的解题题干:
var Logger = function () ;
/**
* @param number timestamp
* @param string message
* @return boolean
*/
Logger.prototype.shouldPrintMessage = function (timestamp, message) ;
/**
* Your Logger object will be instantiated and called as such:
* var obj = new Logger()
* var param_1 = obj.shouldPrintMessage(timestamp,message)
*/
本质上来说,理解 JavaScript 的 this
指向以及原型链函数中怎么调用 this
。工作经验比较多的前端开发大概不会碰上这样的烦恼,不过我起点就是 ES6,ES5 真的有点不太熟练。
知道了 this
的指向之后,在 Logger
中新建一个状态用来保存出现过的信息即可。
使用 JavaScript 解题
其他语言不知道,这道题我觉得与其说考 HashMap 的使用,不如说靠 JavaScript 语言……
没有 constructor 语法糖的 JavaScript 瞬间变得困难起来了。
var Logger = function ()
this.stamps = ;
;
Logger.prototype.shouldPrintMessage = function (timestamp, message)
if (!this.stamps[message] || this.stamps[message] <= timestamp)
this.stamps[message] = timestamp + 10;
return true;
else
return false;
;
以上是关于[JavaScript 刷题] 哈希表 - 日志速率限制器, leetcode 359的主要内容,如果未能解决你的问题,请参考以下文章
[JavaScript 刷题] 哈希表 - 两个数组的交集 II,leetcode 350
[JavaScript 刷题] 哈希表 - 存在重复元素, leetcode 217
[JavaScript 刷题] 哈希表 - 和为 K 的子数组, leetcode 560
[JavaScript 刷题] 哈希表 - 两个数组的交集 II,leetcode 350
[JavaScript 刷题] 哈希表 - 和为 K 的子数组, leetcode 560
[JavaScript 刷题] 哈希表 - 检查一个字符串是否包含所有长度为 K 的二进制子串, leetcode 1461