【Leetcode周賽】No.184 解題記錄

本次競賽雖然進步了,但是也很可惜——第3題沒有在規定時間內做完,所以最終得分只算了2題,不過畢竟有半年沒打了,前面的題平均20min還是用時太長了(我做完一題時大佬們早就結束比賽了),過程中也總是查C++API文檔,說明自己還是不熟練,所以以後得好好研究下C++STL模板庫。
在這裏插入圖片描述
在這裏插入圖片描述

No.5380 數組中的字符串匹配

在這裏插入圖片描述
暴力

class Solution {
public:
    vector<string> stringMatching(vector<string>& words) {
        vector<string> ret;
        int flag;
        for(int i=0;i<words.size();i++){
            flag=0;
            for(int j=0;j<words.size()&&!flag;j++){
                if(words[i]!=words[j]&&words[i].length()<words[j].length()){
                    if(words[j].find(words[i],0)!=string::npos){
                        ret.push_back(words[i]);
                        flag=1;
                    }
                        
                }
            }
        }
        return ret;
    }
};

No.5381 查詢帶鍵的排列

在這裏插入圖片描述
在這裏插入圖片描述
用容器暴力模擬

class Solution {
public:
    int find(vector<int> v,int key){
        for(int i=0;i<v.size();i++){
            if(v[i]==key){
                return i;
            }
        }
        return -1;
    }
    vector<int> processQueries(vector<int>& queries, int m) {
        vector<int> ret,v(m);
        for(int i=0;i<m;i++){
            v[i]=i+1;//P
        }
        for(int i=0;i<queries.size();i++){
            int tmp=queries[i];
            int pos=find(v,tmp);
            ret.push_back(pos);
            v.erase(v.begin()+pos);
            v.insert(v.begin(),tmp);
        }
        return ret;
    }
};

No.5382 HTML試題解析器

在這裏插入圖片描述在這裏插入圖片描述
用map存儲符號的映射,使用字符串的模板函數replace()、substr()等等進行過程模擬即可。

class Solution {
public:
    map<string, string> m;
    void init(){
        m["&quot;"]="\"";
        m["&amp;"]="&";
        m["&apos;"]="\'";
        m["&gt;"]=">";
        m["&lt;"]="<";
        m["&frasl;"]="/";
        
    }
    string entityParser(string text) {
        init();
        int i=0;
        int size=text.length();
        string ret=text;
        string str;
        int sum=0;
        while(i<size){
            if(text[i]=='&'){
                int start,end;
                start=i;
                do{
                    i++;
                }while(i<size&&text[i]!=';');
               if(i<size){
                    end=i;
                    string s=text.substr(start,end-start+1);
                    if(m.find(s)!=m.end()){
                        str=m[s];
                        ret.replace(start-sum,s.length(),str,0,str.length());
                        sum+=s.length()-1;
                    }
                }
            }
            i++;
        }      
        return ret;
    }
};

No.5383 給 N x 3 網格圖塗色的方案數

在這裏插入圖片描述
在這裏插入圖片描述
暫未做

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章