Logger Rate Limiter

easy design hash map

Problem

Design a logger that, given a timestamp and a message, returns true iff the message hasn't been printed in the last 10 seconds.

InputshouldPrintMessage(1,"foo"), (2,"bar"), (3,"foo"), (8,"bar"), (11,"foo")
Output[true, true, false, false, true]
"foo" at 1 then again at 11 — exactly 10 apart, printed.

class Logger:
    def __init__(self):
        self.gate = {}
    def shouldPrintMessage(self, t, msg):
        if msg in self.gate and t < self.gate[msg]:
            return False
        self.gate[msg] = t + 10
        return True
class Logger {
  constructor() { this.gate = new Map(); }
  shouldPrintMessage(t, msg) {
    if (this.gate.has(msg) && t < this.gate.get(msg)) return false;
    this.gate.set(msg, t + 10);
    return true;
  }
}
class Logger {
    Map gate = new HashMap<>();
    public boolean shouldPrintMessage(int t, String msg) {
        if (gate.containsKey(msg) && t < gate.get(msg)) return false;
        gate.put(msg, t + 10); return true;
    }
}
class Logger {
    unordered_map gate;
public:
    bool shouldPrintMessage(int t, string msg) {
        if (gate.count(msg) && t < gate[msg]) return false;
        gate[msg] = t + 10; return true;
    }
};
Time: O(1) per call Space: O(M)