359. Logger Rate Limiter
Design, Hash Table ·Problem Statement
link: LeetCode.cn LeetCode
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.
Example:
Input: ["Logger", "shouldPrintMessage", "shouldPrintMessage"."shouldPrintMessage", "shouldPrintMessage", "shouldPrintMessage", "shouldPrintMessage"][[], [1, "foo"], [2, "bar"], [3, "foo"], [8, "bar"], [10, "foo"], [11, "foo"]]
Output: [null, true, true, false, false, false, true]
Solution Approach
Algorithm
Implement
class Solution:
def __init__(self):
self.map = {}
def shouldPrintMessage(self, timestamp: int, message: str) -> bool:
_map = self.map
if message not in _map or timestamp - _map[message] >= 10:
_map[message] = timestamp
return True
return False