1797. 设计一个验证系统

2023-02-23 09:12:16 浏览数 (1)

解题思路

Map<tokenId, 过期时间> 缓存验证码

复杂度分析 时间复杂度:countUnexpiredTokensO(n),n为循环次数 空间复杂度:O(n),n为map大小

代码

代码语言:javascript复制
class AuthenticationManager {
    int timeToLive; 
    Map<String, Integer> map;

    public AuthenticationManager(int timeToLive) {
        this.timeToLive = timeToLive;
        this.map = new HashMap<String, Integer>();
    }
    
    public void generate(String tokenId, int currentTime) {
        map.put(tokenId, timeToLive   currentTime);
    }
    
    public void renew(String tokenId, int currentTime) {
        if(map.getOrDefault(tokenId, 0) > currentTime) {
            map.put(tokenId, timeToLive   currentTime);
        }
    }
    
    public int countUnexpiredTokens(int currentTime) {
        int count = 0;
        for (int time : map.values()) {
            if (time > currentTime) {
                count  ;
            }
        }
        return count;
    }
}

0 人点赞