2023-11-23 LeetCode每日一题(HTML 实体解析器)

2023-11-23每日一题

一、题目编号

复制代码
1410. HTML 实体解析器

二、题目链接

点击跳转到题目位置

三、题目描述

「HTML 实体解析器」 是一种特殊的解析器,它将 HTML 代码作为输入,并用字符本身替换掉所有这些特殊的字符实体。

HTML 里这些特殊字符和它们对应的字符实体包括:

  • **双引号:**字符实体为 " ,对应的字符是 " 。
  • **单引号:**字符实体为 ' ,对应的字符是 ' 。
  • **与符号:**字符实体为 & ,对应对的字符是 & 。
  • **大于号:**字符实体为 > ,对应的字符是 > 。
  • **小于号:**字符实体为 < ,对应的字符是 < 。
  • **斜线号:**字符实体为 ⁄ ,对应的字符是 / 。

给你输入字符串 text ,请你实现一个 HTML 实体解析器,返回解析器解析后的结果。

示例 1:

示例 2:

示例 3:

示例 4:

示例 5:

四、解题代码

cpp 复制代码
class Solution {
public:
    using EntityChar = pair <string, char>;

    vector <EntityChar> entityList;

    string entityParser(string text) {
        entityList = vector({
            (EntityChar){"&quot;", '"'},
            (EntityChar){"'", '\''},
            (EntityChar){"&amp;", '&'},
            (EntityChar){"&gt;", '>'},
            (EntityChar){"&lt;", '<'},
            (EntityChar){"&frasl;", '/'}
        });

        string r = "";
        for (int pos = 0; pos < text.size(); ) {
            bool isEntity = false;
            if (text[pos] == '&') {
                for (const auto &[e, c]: entityList) {
                    if (text.substr(pos, e.size()) == e) {
                        r.push_back(c);
                        pos += e.size();
                        isEntity = true;
                        break;
                    }
                }
            }
            if (!isEntity) {
                r.push_back(text[pos++]);
                continue;
            }
        }
        return r;
    }
};

五、解题思路

(1) 模拟即可。

相关推荐
Morwit2 分钟前
【力扣hot100】 85. 最大矩形
c++·算法·leetcode·职场和发展
艾醒10 分钟前
MiniMax M2.5:从黑马到全球顶流的"前世今生"与趣闻
算法
m0_5281744523 分钟前
C++中的代理模式变体
开发语言·c++·算法
2401_8830354637 分钟前
C++代码风格检查工具
开发语言·c++·算法
啊哦呃咦唔鱼43 分钟前
LeetCode hot100-438 找到字符串中所以字母异位词
算法·leetcode·职场和发展
重生之后端学习1 小时前
136. 只出现一次的数字
开发语言·算法·leetcode·职场和发展·深度优先
luckycoding1 小时前
LCR 014.字符串的排列
leetcode
见叶之秋1 小时前
详解单链表(含链表的实现过程)
数据结构·链表
smj2302_796826521 小时前
解决leetcode第3869题.统计区间内奇妙数的数目
python·算法·leetcode
TracyCoder1231 小时前
LeetCode Hot100(66/100)——118. 杨辉三角
算法·leetcode·职场和发展