题目来源:
leetcode题目,网址:1410. HTML 实体解析器 - 力扣(LeetCode)
解题思路:
使用map存放特殊字符串及其应被替换为的字符串。然后遍历字符串替换 map 中的字符串即可。
解题代码:
class Solution {
public:
string entityParser(string text) {
unordered_map<string,string> map=getMap();
string res="";
for(int i=0;i<text.length();i++){
if(text[i]!='&'|| i==text.length()-1){
res+=text[i];
}else{
for(int j=i+1;j<text.length();j++){
if(text[j]=='&'){
res+=text.substr(i,j-i);
i=j-1;
break;
}else if(text[j]==';'){
string temp=text.substr(i,j-i+1);
if(map.count(temp)==0){
res+=text.substr(i,j-i+1);
}else{
res+=map[temp];
}
i=j;
break;
}else if(j==text.length()-1){
res+=text.substr(i,j-i+1);
i=j;
break;
}
}
}
}
return res;
}
unordered_map<string,string> getMap(){
unordered_map<string,string> res;
res["""]="\"";
res["'"]="\'";
res["&"]="&";
res[">"]=">";
res["<"]="<";
res["⁄"]="/";
return res;
}
};
总结:
官方题解也是模拟,不过他在每一个 & 字符处对map中的字符串逐个判断是否相等。