LeetCode 359. Logger Rate Limiter

Post by ailswan Dec. 13, 2023

359. Logger Rate Limiter

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