首頁>技術>

題目

你有一個只支援單個標籤頁的 瀏覽器 ,最開始你瀏覽的網頁是 homepage ,

你可以訪問其他的網站 url ,也可以在瀏覽歷史中後退 steps 步或前進 steps 步。

請你實現 BrowserHistory 類:

BrowserHistory(string homepage) ,用 homepage 初始化瀏覽器類。

void visit(string url) 從當前頁跳轉訪問 url 對應的頁面 。

string back(int steps) 在瀏覽歷史中後退 steps 步。

如果你只能在瀏覽歷史中後退至多 x 步且 steps > x ,那麼你只後退 x 步。

請返回後退 至多 steps 步以後的 url 。

string forward(int steps) 在瀏覽歷史中前進 steps 步。

如果你只能在瀏覽歷史中前進至多 x 步且 steps > x ,那麼你只前進 x 步。

請返回前進 至多 steps步以後的 url 。

示例:輸入:["BrowserHistory","visit","visit","visit","back","back","forward",

"visit","forward","back","back"]

[["leetcode.com"],["google.com"],["facebook.com"],

["youtube.com"],[1],[1],[1],["linkedin.com"],[2],[2],[7]]

輸出:[null,null,null,null,"facebook.com","google.com","facebook.com",null,

"linkedin.com","google.com","leetcode.com"]

解釋:

BrowserHistory browserHistory = new BrowserHistory("leetcode.com");

browserHistory.visit("google.com"); // 你原本在瀏覽 "leetcode.com" 。訪問 "google.com"

browserHistory.visit("facebook.com"); // 你原本在瀏覽 "google.com" 。訪問 "facebook.com"

browserHistory.visit("youtube.com");

// 你原本在瀏覽 "facebook.com" 。訪問 "youtube.com"

browserHistory.back(1);

// 你原本在瀏覽 "youtube.com" ,後退到 "facebook.com" 並返回 "facebook.com"

browserHistory.back(1);

// 你原本在瀏覽 "facebook.com" ,後退到 "google.com" 並返回 "google.com"

browserHistory.forward(1);

// 你原本在瀏覽 "google.com" ,前進到 "facebook.com" 並返回 "facebook.com"

browserHistory.visit("linkedin.com");

// 你原本在瀏覽 "facebook.com" 。 訪問 "linkedin.com"

browserHistory.forward(2);

// 你原本在瀏覽 "linkedin.com" ,你無法前進任何步數。

browserHistory.back(2);

// 你原本在瀏覽 "linkedin.com" ,後退兩步依次先到 "facebook.com" ,然後到 "google.com" ,並返回 "google.com"

browserHistory.back(7);

// 你原本在瀏覽 "google.com", 你只能後退一步到 "leetcode.com" ,並返回 "leetcode.com"

提示:1 <= homepage.length <= 20

1 <= url.length <= 20

1 <= steps <= 100

homepage 和 url 都只包含 '.' 或者小寫英文字母。

最多呼叫 5000 次 visit, back 和 forward 函式。

解題思路分析

1、陣列;時間複雜度O(1),空間複雜度O(n)

type BrowserHistory struct {	arr   []string	index int}func Constructor(homepage string) BrowserHistory {	return BrowserHistory{		arr:   []string{homepage},		index: 0,	}}func (this *BrowserHistory) Visit(url string) {	length := len(this.arr)	if this.index == length-1 {		this.arr = append(this.arr, url)	} else if this.index < length-1 {		this.arr = this.arr[:this.index+1]		this.arr = append(this.arr, url)	}	this.index++}func (this *BrowserHistory) Back(steps int) string {	if steps > this.index {		this.index = 0		return this.arr[0]	}	this.index = this.index - steps	return this.arr[this.index]}func (this *BrowserHistory) Forward(steps int) string {	length := len(this.arr)	if this.index == length-1 {	} else if this.index+steps > length-1 {		this.index = length - 1	} else {		this.index = this.index + steps	}	return this.arr[this.index]}
總結

Medium題目,簡單的設計題目,使用陣列即可

15
最新評論
  • BSA-TRITC(10mg/ml) TRITC-BSA 牛血清白蛋白改性標記羅丹明
  • leetcode1003_go_檢查替換後的詞是否有效