LeetCode 359: Logger Rate Limiter (Hash Map)
LeetCode 359Hash MapSolve LeetCode 359 - Logger Rate Limiter.
Source: https://leetcode.com/problems/logger-rate-limiter/
English
Store the last printed timestamp for each message. A new message can be printed when it is unseen or at least 10 seconds after its last print time.
class Logger {
private final java.util.Map last = new java.util.HashMap<>();
public boolean shouldPrintMessage(int timestamp, String message) {
Integer prev = last.get(message);
if (prev == null || timestamp - prev >= 10) {
last.put(message, timestamp);
return true;
}
return false;
}
} type Logger struct { last map[string]int }
func Constructor() Logger { return Logger{last: map[string]int{}} }
func (l *Logger) ShouldPrintMessage(timestamp int, message string) bool {
if t, ok := l.last[message]; !ok || timestamp-t >= 10 { l.last[message] = timestamp; return true }
return false
}class Logger {
unordered_map last;
public:
bool shouldPrintMessage(int timestamp, string message) {
if (!last.count(message) || timestamp - last[message] >= 10) { last[message] = timestamp; return true; }
return false;
}
}; class Logger:
def __init__(self):
self.last = {}
def shouldPrintMessage(self, timestamp: int, message: str) -> bool:
if message not in self.last or timestamp - self.last[message] >= 10:
self.last[message] = timestamp
return True
return Falseclass Logger {
constructor() { this.last = new Map(); }
shouldPrintMessage(timestamp, message) {
if (!this.last.has(message) || timestamp - this.last.get(message) >= 10) { this.last.set(message, timestamp); return true; }
return false;
}
}中文
用哈希表记录每条 message 上次打印时间。若从未出现,或当前时间与上次时间差至少 10 秒,则可以打印并更新时间。
class Logger {
private final java.util.Map last = new java.util.HashMap<>();
public boolean shouldPrintMessage(int timestamp, String message) {
Integer prev = last.get(message);
if (prev == null || timestamp - prev >= 10) {
last.put(message, timestamp);
return true;
}
return false;
}
} type Logger struct { last map[string]int }
func Constructor() Logger { return Logger{last: map[string]int{}} }
func (l *Logger) ShouldPrintMessage(timestamp int, message string) bool {
if t, ok := l.last[message]; !ok || timestamp-t >= 10 { l.last[message] = timestamp; return true }
return false
}class Logger {
unordered_map last;
public:
bool shouldPrintMessage(int timestamp, string message) {
if (!last.count(message) || timestamp - last[message] >= 10) { last[message] = timestamp; return true; }
return false;
}
}; class Logger:
def __init__(self):
self.last = {}
def shouldPrintMessage(self, timestamp: int, message: str) -> bool:
if message not in self.last or timestamp - self.last[message] >= 10:
self.last[message] = timestamp
return True
return Falseclass Logger {
constructor() { this.last = new Map(); }
shouldPrintMessage(timestamp, message) {
if (!this.last.has(message) || timestamp - this.last.get(message) >= 10) { this.last.set(message, timestamp); return true; }
return false;
}
}
Comments