字符串:leetcode1410. HTML 实体解析器
1410. HTML 实体解析器
「HTML 实体解析器」 是一种特殊的解析器,它将 HTML 代码作为输入,并用字符本身替换掉所有这些特殊的字符实体。
HTML 里这些特殊字符和它们对应的字符实体包括:
- 双引号:字符实体为
"
,对应的字符是"
。 - 单引号:字符实体为
'
,对应的字符是'
。 - 与符号:字符实体为
&
,对应对的字符是&
。 - 大于号:字符实体为
>
,对应的字符是>
。 - 小于号:字符实体为
<
,对应的字符是<
。 - 斜线号:字符实体为
⁄
,对应的字符是/
。
给你输入字符串 text
,请你实现一个 HTML 实体解析器,返回解析器解析后的结果。
使用双指针遍历string
int i=0;
while(i<n):
if(s[i]第一个符合条件){
int j=i;
while(j<n&&s[j]符合条件)j++;//停下后j不符合条件;
string t=s.substr(i,j-i);//扣字符串
....
}
class Solution {
public:
string entityParser(string s) {
map<string, char> mp;
mp["quot"] = '\"';
mp["apos"] = '\'';
mp["amp"] = '&';
mp["gt"] = '>';
mp["lt"] = '<';
mp["frasl"] = '/';
string res="";
int i=0,n=s.size();
while(i<n){
if(s[i]!='&'){
res+=s[i];
i++;
}else{
int j=i;
while(j<n&&s[j]!=';')j++;
string t=s.substr(i+1,j-i-1);
if(!mp[t]){
res+=s[i];
i++;
}else{
res+=mp[t];
i=j+1;
}
}
}
return res;
}
};