1472 Design Browser History

https://leetcode.com/problems/design-browser-history/

class BrowserHistory {
    Deque<String> forward;
    Deque<String> backward;
    String curUrl;
    public BrowserHistory(String homepage) {
        forward = new ArrayDeque<>();
        backward = new ArrayDeque<>();
        curUrl = homepage;
    }
    
    public void visit(String url) {
        backward.offerFirst(curUrl);
        curUrl = url;
        forward = new ArrayDeque<>();
    }
    
    public String back(int steps) {
        while (steps > 0 && !backward.isEmpty()) {
            forward.offerFirst(curUrl);
            curUrl = backward.pollFirst();
            steps--;
        }
        return curUrl;
    }
    
    public String forward(int steps) {
        while (steps > 0 && !forward.isEmpty()) {
            backward.offerFirst(curUrl);
            curUrl = forward.pollFirst();
            steps--;
        }
        return curUrl;
    }
}

/**
 * Your BrowserHistory object will be instantiated and called as such:
 * BrowserHistory obj = new BrowserHistory(homepage);
 * obj.visit(url);
 * String param_2 = obj.back(steps);
 * String param_3 = obj.forward(steps);
 */

用两个stack来记录forwar和backward,注意curUrl不属于任意一个stack

Last updated