1、题目描述
2、解题思路
定义一个 HashMap<String, Integer> 来保存日志和时间戳;
当一个新的日志要插入时,我们先判断 map 中是否有这条日志:
1、map 中有这条日志,判断待插入的时间戳和已存在的时间戳之间的差值,如果小于 10,则返回 false;如果大于等于 10,则更新时间戳为新的时间戳,返回true;
2、map 中没有这条日志,插入这条日志,返回 true。
3、解题代码
class Logger {
private Map<String, Integer> map;
/**
* Initialize your data structure here.
*/
public Logger() {
this.map = new HashMap<>();
}
/**
* Returns true if the message should be printed in the given timestamp, otherwise returns false.
* If this method returns false, the message will not be printed.
* The timestamp is in seconds granularity.
*/
public boolean shouldPrintMessage(int timestamp, String message) {
if (map.containsKey(message)) {
Integer oldTimestamp = map.get(message);
if (timestamp - oldTimestamp < 10) {
return false;
} else {
map.put(message, timestamp); // 更新时间戳
return true;
}
} else {
map.put(message, timestamp); // 加入这条日志
return true;
}
}
}
/**
* Your Logger object will be instantiated and called as such:
* Logger obj = new Logger();
* boolean param_1 = obj.shouldPrintMessage(timestamp,message);
*/