# GeetCode Hub

You have a browser of one tab where you start on the `homepage` and you can visit another `url`, get back in the history number of `steps` or move forward in the history number of `steps`.

Implement the `BrowserHistory` class:

• `BrowserHistory(string homepage)` Initializes the object with the `homepage` of the browser.
• `void visit(string url)` Visits `url` from the current page. It clears up all the forward history.
• `string back(int steps)` Move `steps` back in history. If you can only return `x` steps in the history and `steps > x`, you will return only `x` steps. Return the current `url` after moving back in history at most `steps`.
• `string forward(int steps)` Move `steps` forward in history. If you can only forward `x` steps in the history and `steps > x`, you will forward only `x` steps. Return the current `url` after forwarding in history at most `steps`.

Example:

```Input:
["BrowserHistory","visit","visit","visit","back","back","forward","visit","forward","back","back"]
Output:

Explanation:
BrowserHistory browserHistory = new BrowserHistory("leetcode.com");
browserHistory.forward(2);                // You are in "linkedin.com", you cannot move forward any steps.
browserHistory.back(7);                   // You are in "google.com", you can move back only one step to "leetcode.com". return "leetcode.com"
```

Constraints:

• `1 <= homepage.length <= 20`
• `1 <= url.length <= 20`
• `1 <= steps <= 100`
• `homepage` and `url` consist of  '.' or lower case English letters.
• At most `5000` calls will be made to `visit`, `back`, and `forward`.

class BrowserHistory { public BrowserHistory(String homepage) { } public void visit(String url) { } public String back(int steps) { } public String forward(int steps) { } } /** * 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); */