当前位置: 首页 > news >正文

leetcode做题笔记1410. HTML 实体解析器

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

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

  • 双引号:字符实体为 " ,对应的字符是 " 。
  • 单引号:字符实体为 ' ,对应的字符是 ' 。
  • 与符号:字符实体为 & ,对应对的字符是 & 。
  • 大于号:字符实体为 > ,对应的字符是 > 。
  • 小于号:字符实体为 &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.com&frasl;problemset&frasl;all"
输出:"leetcode.com/problemset/all"

思路一:模拟题意(哈希表替换)

c++解法

class Solution {
public:string entityParser(string s) {map<string, 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更加直接

http://www.lryc.cn/news/241578.html

相关文章:

  • sql18(Leetcode1633各赛事的用户注册率)
  • 开发旅游APP的意义
  • docker安装xxl-job
  • Django QuerySet.order_by SQL注入漏洞(CVE-2021-35042)
  • 鼠标拖拽问题,不选中文本不触发单击事件
  • Java 之 final 详解
  • 数据分析策略
  • 子虔科技亮相2023工业软件生态大会 以先进理念赋能工业软件发展
  • 《C++PrimePlus》第9章 内存模型和名称空间
  • FFmpeg常用命令讲解及实战二
  • Django之Cookie与Session,CBV加装饰器
  • 定时发朋友圈怎么发?
  • nodejs 将word转为pdf office-to-pdf
  • 12.docker的网络-host模式
  • 如何在外部数据库中存储空间化表时使用Mapinfo_mapcatalog
  • 从Github登录的双因子验证到基于时间戳的一次性密码:2FA、OTP与TOTP
  • ubuntu22.04安装wvp-gb28181-pro 2023-11-23最新版本(一键安装)
  • Spring Boot 应用的 Docker 化:从 Maven 构建到 Docker 部署的完整指南
  • linux之chmod命令
  • 论文阅读 Forecasting at Scale (一)
  • Unity PlayerPrefs相关应用
  • LeetCode题解:13. 罗马数字转整数,哈希表,JavaScript,详细注释
  • GPT2-chitchat项目运行
  • selinux-policy-default(2:2.20231119-2)软件包内容详细介绍(3)
  • Spring boot @Bean
  • ptpd2提示failed to join the multicast group (strerror: No buffer space available)
  • 工业级5G路由器:稳定性更高,网络速度更快!
  • 移动应用程序管理的内容、原因和方式
  • Revive开发商加入VR开源标准OpenXR
  • Lambda 重构面向对象的设计模式