网页制作与网站开发从入门到精通,房地产网站建设存在问题,怎么制作网站生成图片,品牌形象设计的意义「HTML 实体解析器」 是一种特殊的解析器#xff0c;它将 HTML 代码作为输入#xff0c;并用字符本身替换掉所有这些特殊的字符实体。
HTML 里这些特殊字符和它们对应的字符实体包括#xff1a;
双引号#xff1a;字符实体为 quot; #xff0c;对应的字符是 …「HTML 实体解析器」 是一种特殊的解析器它将 HTML 代码作为输入并用字符本身替换掉所有这些特殊的字符实体。
HTML 里这些特殊字符和它们对应的字符实体包括
双引号字符实体为 quot; 对应的字符是 。单引号字符实体为 apos; 对应的字符是 。与符号字符实体为 amp; 对应对的字符是 。大于号字符实体为 gt; 对应的字符是 。小于号字符实体为 lt; 对应的字符是 。斜线号字符实体为 frasl; 对应的字符是 / 。
给你输入字符串 text 请你实现一个 HTML 实体解析器返回解析器解析后的结果。 示例 1
输入text amp; is an HTML entity but ambassador; is not.
输出 is an HTML entity but ambassador; is not.
解释解析器把字符实体 amp; 用 替换示例 2
输入text and I quote: quot;...quot;
输出and I quote: \...\示例 3
输入text Stay home! Practice on Leetcode :)
输出Stay home! Practice on Leetcode :)示例 4
输入text x gt; y amp;amp; x lt; y is always false
输出x y x y is always false示例 5
输入text leetcode.comfrasl;problemsetfrasl;all
输出leetcode.com/problemset/all
思路一模拟题意哈希表替换
c解法
class Solution {
public:string entityParser(string s) {mapstring, char mp;mp[quot] \;mp[apos] \;mp[amp] ;mp[gt] ;mp[lt] ;mp[frasl] /;string ans ;int i 0, j 0, n s.size();while (i n) {if (s[i] ! ) {ans s[i];i;j;} else {j i;while (j n s[j] ! ;) j;string t s.substr(i 1, j - i - 1);if (mp.find(t) mp.end()) {ans s[i];i, j;continue;}ans mp[t];i j 1;}}return ans;}
};
分析
本题考察对字符串的替换可直接使用replace进行替换也可将对应字符存入哈希表中一旦读取到对应字符串则将其替换为哈希表中对应字符串
总结
利用哈希表可解决replaceall更加直接