leetcode 1472. デザインブラウザ履歴(C++)

3893 ワード

単一のラベルページのみをサポートするブラウザがあります.最初に閲覧したページは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回のvisitback、およびforward関数を最大で呼び出す.

  • C++
    class BrowserHistory 
    {
    private:
    	vector tmp;
    	int idx;
    public:
        BrowserHistory(string homepage) 
        {
        	idx=0;
        	tmp.push_back(homepage);
        }
        
        void visit(string url) 
        {
        	if(idx=0)
        	{
        		idx-=steps;
        	}
        	else
        	{
        		idx=0;
        	}
        	return tmp[idx];
        }
        
        string forward(int steps) 
        {
        	if(idx+stepsvisit(url);
     * string param_2 = obj->back(steps);
     * string param_3 = obj->forward(steps);
     */