Back to all solutions
#359 - Logger Rate Limiter
Problem Description
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 timestamp t + 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) Returns true if the message should be printed in the given timestamp, otherwise returns false.
Solution
var Logger = function() {
this.messageTimestamps = new Map();
};
/**
* @param {number} timestamp
* @param {string} message
* @return {boolean}
*/
Logger.prototype.shouldPrintMessage = function(timestamp, message) {
const nextAllowed = this.messageTimestamps.get(message) || 0;
if (timestamp >= nextAllowed) {
this.messageTimestamps.set(message, timestamp + 10);
return true;
}
return false;
};