Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
45 changes: 0 additions & 45 deletions 0359-logger-rate-limiter/README.md

This file was deleted.

50 changes: 50 additions & 0 deletions leetcode/easy/0359-logger-rate-limiter/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
# [Logger Rate Limiter](https://leetcode.com/problems/logger-rate-limiter) ![Shield](https://img.shields.io/badge/Easy-green)

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.

## Implementation

Implement the `Logger` class:

- `Logger()`: Initializes the `logger` object.
- `bool shouldPrintMessage(int timestamp, string message)`: Returns `true` if the `message` should be printed at the given `timestamp`, otherwise returns `false`.

---

### Example

#### Input

```bash
["Logger", "shouldPrintMessage", "shouldPrintMessage", "shouldPrintMessage", "shouldPrintMessage", "shouldPrintMessage", "shouldPrintMessage"]
[[], [1, "foo"], [2, "bar"], [3, "foo"], [8, "bar"], [10, "foo"], [11, "foo"]]
```

#### Output

```bash
[null, true, true, false, false, false, true]
```

#### Explanation

```bash
Logger logger = new Logger();
logger.shouldPrintMessage(1, "foo"); // return true, next allowed timestamp for "foo" is 1 + 10 = 11
logger.shouldPrintMessage(2, "bar"); // return true, next allowed timestamp for "bar" is 2 + 10 = 12
logger.shouldPrintMessage(3, "foo"); // 3 < 11, return false
logger.shouldPrintMessage(8, "bar"); // 8 < 12, return false
logger.shouldPrintMessage(10, "foo"); // 10 < 11, return false
logger.shouldPrintMessage(11, "foo"); // 11 >= 11, return true, next allowed timestamp for "foo" is 11 + 10 = 21
```

---

## Constraints

- `0 <= timestamp <= 10^9`
- Every `timestamp` will be passed in non-decreasing order (chronological order).
- `1 <= message.length <= 30`
- At most `10^4` calls will be made to `shouldPrintMessage`.
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
class Logger {
export class Logger {
messageMap = new Map<string, number>();

shouldPrintMessage(timestamp: number, message: string): boolean {
if (this.messageMap.has(message)) {
const lastTimestamp = this.messageMap.get(message);
const lastTimestamp = this.messageMap.get(message)!;
if (timestamp >= lastTimestamp + 10) {
this.messageMap.set(message, timestamp);
return true;
Expand Down
Loading