1410HTML实体解析器

1410HTML实体解析器

下面是题目

下面是题目给出的代码

1
2
3
4
5
6
class Solution {
public:
string entityParser(string text){

}
};

我最先想到的就是图存储

  • 先把元素一一对应
  • 然后遍历text字符串
  • 如果正常,就直接加在答案上
  • 如果出现了&,那么把从&开始到; 的字符串交给新的字符串
  • 判断字符串是否在map中存储
    • 如果发现了,那么改成对应的符号
    • 否则保持原样,加在答案上
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
class Solution {
public:
string entityParser(string text){
string result="";
string temp="";
unordered_map<string,string>mp;
mp["&quot;"]="\"";//有个转移符号,很骚
mp["&apos;"]="'";
mp["&amp;"]="&";
mp["&gt;"]=">";
mp["&lt;"]="<";
mp["&frasl;"]="/";
//通过一个flag判断从&开始到;结束中的字符串
bool flag = false;
for(auto c:text)
{
if(!flag && c!='&')
result += c ;
//如果没到底,那么继续加
else if(flag && c!=';')
temp += c;
else if(c=='&')
flag=true,temp+=c;
//加到底了,进行一个判断
else if(c==';'&& flag) {
temp += c;
if (mp.find(temp) != mp.end())
result += mp[temp];
else
result += temp;
flag = false;
temp = "";
}
}
return result;
}
};
-------------本文结束,感谢您的阅读-------------