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

网站建设专家 金石下拉唐山企业网站建设公司

网站建设专家 金石下拉,唐山企业网站建设公司,莱芜话题论坛,网页设计尺寸大小指的是什么Every day a Leetcode 题目来源:1410. HTML 实体解析器 解法1:模拟 遍历字符串 text,每次遇到 ’&‘,就判断以下情况: 双引号:字符实体为 " ,对应的字符是 " 。单引号&a…

Every day a Leetcode

题目来源:1410. HTML 实体解析器

解法1:模拟

遍历字符串 text,每次遇到 ’&‘,就判断以下情况:

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

如果是上述情况,将转换结果插入结果;如果都不是,则直接添加到结果里。

代码:

/** @lc app=leetcode.cn id=1410 lang=cpp** [1410] HTML 实体解析器*/// @lc code=start
class Solution
{
public:string entityParser(string text){string result;int i = 0;while (i < text.size()){if (text[i] == '&'){if (text.substr(i, 4) == "&gt;"){result += '>';i += 4;}else if (text.substr(i, 4) == "&lt;"){result += '<';i += 4;}else if (text.substr(i, 5) == "&amp;"){result += '&';i += 5;}else if (text.substr(i, 6) == "&quot;"){result += '"';i += 6;}else if (text.substr(i, 6) == "&apos;"){result += '\'';i += 6;}else if (text.substr(i, 7) == "&frasl;"){result += '/';i += 7;}elseresult += text[i++];}elseresult += text[i++];}return result;}
};
// @lc code=end

结果:

在这里插入图片描述

复杂度分析:

时间复杂度:O(n),其中 n 是字符串 text 的长度。

空间复杂度:O(1)。

解法2:模拟

本题要求把字符串中所有的「字符实体」替换成对应的字符。

「字符实体」都是由 & 开头的,所以我们只需要遍历一遍字符串,用一个变量 pos\textit{pos}pos 表示当前处理的位置,如果 text[pos]=‘&’,就在这个位置进行探测。假设一个「字符实体」为 e,对应的字符为 c,那么可以通过判断 pos 位置开始,长度和 e 相同的子串是否和 e 相等,如果相等就可以替换。

代码:

class Solution {
public:using EntityChar = pair <string, char>;vector <EntityChar> entityList;string entityParser(string text) {entityList = vector({(EntityChar){"&quot;", '"'},(EntityChar){"&apos;", '\''},(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;}
};

结果:

在这里插入图片描述

复杂度分析:

时间复杂度:O(k×n),其中 n 是字符串 text 的长度。考虑最坏情况,每个位置都是 &,那么每个位置都要进行 6 次探测,探测的总时间代价和「实体字符」的总长度 k 相关,这里 k=6+6+5+4+4+7=32。

空间复杂度:O(k),这里用了 entityList 作为辅助变量,字符总数为 k+6,故渐进空间复杂度为 O(k+6)=O(k)。

http://www.yayakq.cn/news/719218/

相关文章:

  • ps网站界面设计陈木胜导演
  • 做网站用什么后台做竞猜网站合法吗
  • 网站建设成本控制楼盘网
  • 网站域名注册步骤阿里云域名申请注册
  • 做网站容易找工作吗网站建设合作报道
  • 建设网站增城如何用wordpress做淘宝客
  • 建设银行管方网站企业网站注销流程
  • 网站风格什么意思哪里做网站百度收录块
  • 网站备案 现场提交响应式网站开发设计
  • 图片 网站开发支付宝免签约wordpress
  • 企业网站主题用dw做的企业网站
  • 菠菜网站建设条件买域名不建网站
  • 出口电商网站建设程序网站建设技术公司
  • 网站开发行业新闻wordpress书籍
  • 环保网站建设维护情况报告wordpress收费会员插件
  • 网站建设asp营销手机都有什么功能啊
  • wordpress 知言搜素引擎排名优化技术
  • 江苏省建设厅官方网站资质查询网站怎么做白色字
  • 制作网站多少钱展台
  • 苏州商城网站建设电话硬件开发入门
  • 建站服务论坛创建网站的过程
  • 牡丹园网站建设跨境电商网站建设开发
  • 做网站准备什么问题加强网站基础建设项目
  • 好的h5制作网站模板下载重庆网络推广引流公司
  • 网站建设行业如何标签云wordpress
  • 网站建设成本费用东莞公司网站怎么做
  • 怎么做淘客网站推广软文怎么优化网站
  • 我的网站设计联盟付费网站模板
  • 云阳一平米网站建设建设部网站建造师公示
  • 做网站ps注意事项wordpress电商小程序