[LeetCode] Logger Rate Limiter

359. Logger Rate Limiter

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.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
class Logger {
unordered_map<string, int> m;
public:
Logger() {}

bool shouldPrintMessage(int timestamp, string message) {
if(m.count(message) and m[message] + 10 > timestamp) {
return false;
} else {
m[message] = timestamp;
return true;
}
}
};

/**
* Your Logger object will be instantiated and called as such:
* Logger* obj = new Logger();
* bool param_1 = obj->shouldPrintMessage(timestamp,message);
*/
Author: Song Hayoung
Link: https://songhayoung.github.io/2022/02/12/PS/LeetCode/logger-rate-limiter/
Copyright Notice: All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.