Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit 50fa106

Browse files
LC#1472 design browser history
1 parent 53952ae commit 50fa106

File tree

1 file changed

+108
-0
lines changed

1 file changed

+108
-0
lines changed
Lines changed: 108 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,108 @@
1+
package LinkedList;
2+
3+
import java.util.LinkedList;
4+
5+
public class DesignBrowserHistory1472 {
6+
7+
int currentPosition;
8+
LinkedList<String> list;
9+
10+
public DesignBrowserHistory1472(String homepage) {
11+
list = new LinkedList<>();
12+
list.add(homepage);
13+
currentPosition = 0;
14+
}
15+
16+
public void visit(String url) {
17+
// first clearing forward history
18+
for (int i = currentPosition + 1; i < list.size(); i++) {
19+
list.remove(i);
20+
}
21+
list.add(url);
22+
currentPosition++;
23+
}
24+
25+
public String back(int steps) {
26+
while (steps != 0 && currentPosition > 0) {
27+
currentPosition--;
28+
steps--;
29+
}
30+
return list.get(currentPosition);
31+
}
32+
33+
public String forward(int steps) {
34+
int count = 0;
35+
while (count != steps && currentPosition < list.size() - 1) {
36+
count++;
37+
currentPosition++;
38+
}
39+
40+
return list.get(currentPosition);
41+
}
42+
}
43+
44+
/**
45+
* Your BrowserHistory object will be instantiated and called as such:
46+
*
47+
* DesignBrowserHistory1472 obj = new DesignBrowserHistory1472(homepage);
48+
*
49+
* obj.visit(url);
50+
*
51+
* String param_2 = obj.back(steps);
52+
*
53+
* String param_3 = obj.forward(steps);
54+
*
55+
* Input:
56+
*
57+
* ["BrowserHistory","visit","visit","visit","back","back","forward","visit","forward","back","back"]
58+
*
59+
* [["leetcode.com"],["google.com"],["facebook.com"],["youtube.com"],[1],[1],[1],["linkedin.com"],[2],[2],[7]]
60+
*
61+
* Output:
62+
*
63+
* [null,null,null,null,"facebook.com","google.com","facebook.com",null,"linkedin.com","google.com","leetcode.com"]
64+
*
65+
* Explanation:
66+
*
67+
* BrowserHistory browserHistory = new BrowserHistory("leetcode.com");
68+
*
69+
* browserHistory.visit("google.com"); // You are in "leetcode.com". Visit
70+
* "google.com"
71+
*
72+
* browserHistory.visit("facebook.com"); // You are in "google.com". Visit
73+
* "facebook.com"
74+
*
75+
* browserHistory.visit("youtube.com"); // You are in "facebook.com". Visit
76+
* "youtube.com"
77+
*
78+
* browserHistory.back(1); // You are in "youtube.com", move back to
79+
* "facebook.com" return "facebook.com"
80+
*
81+
* browserHistory.back(1); // You are in "facebook.com", move back to
82+
* "google.com" return "google.com"
83+
*
84+
* browserHistory.forward(1); // You are in "google.com", move forward to
85+
* "facebook.com" return "facebook.com"
86+
*
87+
* browserHistory.visit("linkedin.com"); // You are in "facebook.com". Visit
88+
* "linkedin.com"
89+
*
90+
* browserHistory.forward(2); // You are in "linkedin.com", you cannot move
91+
* forward any steps.
92+
*
93+
* browserHistory.back(2); // You are in "linkedin.com", move back two steps to
94+
* "facebook.com" then to "google.com". return "google.com"
95+
*
96+
* browserHistory.back(7); // You are in "google.com", you can move back only
97+
* one step to "leetcode.com". return "leetcode.com"
98+
*
99+
*/
100+
101+
/* failed test case -
102+
103+
["BrowserHistory","visit","forward","forward","visit","visit","back","visit","visit","forward","back","visit","visit","visit","forward","forward","visit","visit","back","visit","forward","visit","visit","visit","back"]
104+
[["jrbilt.com"],["uiza.com"],[3],[3],["fveyl.com"],["hyhqfqf.com"],[3],["cccs.com"],["bivz.com"],[6],[1],["cmbw.com"],["iywwwfn.com"],["sktbhdx.com"],[8],[10],["bskj.com"],["thw.com"],[6],["hgesj.com"],[6],["ctb.com"],["fllnc.com"],["fs.com"],[7]]
105+
106+
107+
["BrowserHistory","visit","visit","visit","back","back","forward","visit","forward","back","back"]
108+
[["leetcode.com"],["google.com"],["facebook.com"],["youtube.com"],[5],[1],[1],["linkedin.com"],[2],[2],[7]]*/

0 commit comments

Comments
(0)

AltStyle γ«γ‚ˆγ£γ¦ε€‰ζ›γ•γ‚ŒγŸγƒšγƒΌγ‚Έ (->γ‚ͺγƒͺγ‚ΈγƒŠγƒ«) /