我们可以使用一个哈希集合来保存最近 10 秒内出现的消息的时间戳。每次调用 couldPrintMessage() 方法时,我们首先检查该消息是否已经在集合中,如果是,则返回 false;否则,将该消息的时间戳加入集合,并移除所有时间戳小于等于当前时间戳减去 10 的消息时间戳。最后返回 true。

以下是 Java 实现的代码:

import java.util.HashSet;
import java.util.Set;

class Logger {
    private Set<String> messages;

    public Logger() {
        messages = new HashSet<>();
    }

    public boolean couldPrintMessage(String message, int timestamp) {
        if (messages.contains(message)) {
            return false;
        }

        messages.add(message);

        // 移除所有时间戳小于等于当前时间戳减去 10 的消息时间戳
        messages.removeIf(ts -> Integer.parseInt(ts) <= timestamp - 10);

        return true;
    }
}

在上述代码中,我们假设时间戳是整数类型的。如果时间戳是浮点数类型的,我们需要对代码进行相应的修改。

你需要设计一个能够接收带有时间戳的消息流日志系统。如果某条消息当且仅当在过去 10 秒内没有被打印出来那么它就应该被打印出来。在方法 couldPrintMessage 中给定一条消息 message 和一个时间戳 timestamp以秒为单位如果该消息能够在给定的时间戳内被打印则返回 true否则返回 false。

原文地址: https://www.cveoy.top/t/topic/ivWS 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录