【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["""]="\"";
m["&"]="&";
m["'"]="\'";
m[">"]=">";
m["<"]="<";
m["⁄"]="/";
}
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 網格圖塗色的方案數
暫未做