【LeetCode:1410. HTML 实体解析器 | 模拟+哈希表+字符串+库函数】

在这里插入图片描述

🚀 算法题 🚀

🌲 算法刷题专栏 | 面试必备算法 | 面试高频算法 🍀
🌲 越难的东西,越要努力坚持,因为它具有很高的价值,算法就是这样✨
🌲 作者简介:硕风和炜,CSDN-Java领域新星创作者🏆,保研|国家奖学金|高中学习JAVA|大学完善JAVA开发技术栈|面试刷题|面经八股文|经验分享|好用的网站工具分享💎💎💎
🌲 恭喜你发现一枚宝藏博主,赶快收入囊中吧🌻
🌲 人生如棋,我愿为卒,行动虽慢,可谁曾见我后退一步?🎯🎯

🚀 算法题 🚀

在这里插入图片描述

在这里插入图片描述

🍔 目录

    • 🚩 题目链接
    • ⛲ 题目描述
    • 🌟 求解思路&实现代码&运行结果
      • ⚡ 字符串处理+库函数
        • 🥦 求解思路
        • 🥦 实现代码
        • 🥦 运行结果
      • ⚡ 模拟+哈希表+字符串
        • 🥦 求解思路
        • 🥦 实现代码
        • 🥦 运行结果
    • 💬 共勉

🚩 题目链接

  • 1410. HTML 实体解析器

⛲ 题目描述

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

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

双引号:字符实体为 " ,对应的字符是 " 。
单引号:字符实体为 ’ ,对应的字符是 ’ 。
与符号:字符实体为 & ,对应对的字符是 & 。
大于号:字符实体为 > ,对应的字符是 > 。
小于号:字符实体为 < ,对应的字符是 < 。
斜线号:字符实体为 ⁄ ,对应的字符是 / 。
给你输入字符串 text ,请你实现一个 HTML 实体解析器,返回解析器解析后的结果。

示例 1:

输入:text = “& is an HTML entity but &ambassador; is not.”
输出:“& is an HTML entity but &ambassador; is not.”
解释:解析器把字符实体 & 用 & 替换
示例 2:

输入:text = “and I quote: “…””
输出:“and I quote: “…””
示例 3:

输入:text = “Stay home! Practice on Leetcode 😃”
输出:“Stay home! Practice on Leetcode 😃”
示例 4:

输入:text = “x > y && x < y is always false”
输出:“x > y && x < y is always false”
示例 5:

输入:text = “leetcode.com⁄problemset⁄all”
输出:“leetcode.com/problemset/all”

提示:

1 <= text.length <= 10^5
字符串可能包含 256 个ASCII 字符中的任意字符。

🌟 求解思路&实现代码&运行结果


⚡ 字符串处理+库函数

🥦 求解思路
  1. 直接调用replaceAll的替换函数,但是需要注意一点的是,"&“替换”&“要放到最后进行,如果之前替换了,那么很有可能替换后的”&"与其它的单词组成要可以继续替换的单词,继续进行替换,从而最终的结果发生改变。
  2. 具体实现代码如下:
🥦 实现代码
class Solution {public String entityParser(String text) {text=text.replaceAll("&quot;","\"");text=text.replaceAll("&apos;","'");text=text.replaceAll("&gt;",">");text=text.replaceAll("&lt;","<");text=text.replaceAll("&frasl;","/");text=text.replaceAll("&amp;","&");return text;}
}
🥦 运行结果

在这里插入图片描述

⚡ 模拟+哈希表+字符串

🥦 求解思路
  1. 提前通过Hash表记录替换的映射,模拟遍历,从"&“开始,”;'"结束,找到要被替换的单词,通过映射表返回替换的单词,最后通过StringBuilder进行快速拼接。
  2. 具体实现代码如下:
🥦 实现代码
class Solution {public String entityParser(String text) {HashMap<String,String> map=new HashMap<>(){{put("&quot;", "\"");put("&apos;", "'");put("&amp;", "&");put("&gt;", ">");put("&lt;", "<");put("&frasl;", "/");}};int n=text.length();StringBuilder sb=new StringBuilder();for(int i=0;i<n;i++){char c=text.charAt(i);if(c=='&'){int start=i;while(i<n&&text.charAt(i)!=';') i++;String str=text.substring(start,Math.min(i+1,n));if(map.containsKey(str)){sb.append(map.get(str));}else{i=start;sb.append(c);}}else{sb.append(c);}}return sb.toString();}
}
🥦 运行结果

在这里插入图片描述


💬 共勉

最后,我想和大家分享一句一直激励我的座右铭,希望可以与大家共勉!

在这里插入图片描述

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/213890.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

vue3.0使用leaflet

1、获取天地图密钥; 访问:https://www.tianditu.gov.cn/ 注册并登录,访问开发资源 =》地图API =》 地图服务=》申请key 应用管理=》创建新应用=》获取到对应天地图key 2、引入leaflet组件 参考资料:https://leafletjs.com/reference.html#path npm install leaflet …

制造业6S管理方法的卓越价值

在现代制造业中&#xff0c;高效管理和生产流程的优化对企业的成功至关重要&#xff0c;其中&#xff0c;6S管理方法作为精益生产的关键组成部分&#xff0c;为企业提供了卓越的管理模式。下面将深入探讨6S管理方法的价值&#xff0c;特别聚焦于周转箱和工具柜在精益生产中的优…

【Java 进阶篇】Redis持久化之RDB:数据的安全守护者

Redis&#xff0c;作为一款高性能的键值存储系统&#xff0c;支持多种持久化方式&#xff0c;其中RDB&#xff08;Redis DataBase&#xff09;是其最常用的一种。RDB可以将当前时刻的数据快照保存到磁盘&#xff0c;以便在Redis重启时快速恢复数据。本文将深入探讨RDB的原理、配…

springboot+vue基本微信小程序的旅游社系统

项目介绍 现今市面上有关于旅游信息管理的微信小程序还是比较少的&#xff0c;所以本课题想对如今这么多的旅游景区做一个收集和分类。这样可以给身边喜欢旅游的朋友更好地推荐分享适合去旅行的地方。 前端采用HTML架构&#xff0c;遵循HTMLss JavaScript的开发方式&#xff0…

机器学习探索计划——数据集划分

文章目录 导包手写数据划分函数使用sklearn内置的划分数据函数stratifyy理解举例 导包 import numpy as np from matplotlib import pyplot as plt from sklearn.datasets import make_blobs手写数据划分函数 x, y make_blobs(n_samples 300,n_features 2,centers 3,clus…

『Linux升级路』基础开发工具——gcc/g++篇

&#x1f525;博客主页&#xff1a;小王又困了 &#x1f4da;系列专栏&#xff1a;Linux &#x1f31f;人之为学&#xff0c;不日近则日退 ❤️感谢大家点赞&#x1f44d;收藏⭐评论✍️ 目录 一、快速认识gcc/g 二、预处理 &#x1f4d2;1.1头文件展开 &#x1f4d2;1…

【深度学习】CNN中pooling层的作用

1、pooling是在卷积网络&#xff08;CNN&#xff09;中一般在卷积层&#xff08;conv&#xff09;之后使用的特征提取层&#xff0c;使用pooling技术将卷积层后得到的小邻域内的特征点整合得到新的特征。一方面防止无用参数增加时间复杂度&#xff0c;一方面增加了特征的整合度…

【Element】el-switch开关 点击弹窗确认框时状态先改变----点击弹窗取消框失效

一、背景 需求&#xff1a;在列表中添加定期出账的开关按钮&#xff0c;点击开关时&#xff0c;原来的状态不改变&#xff0c;弹出弹窗&#xff1b;点击弹窗取消按钮&#xff1a;状态不改变&#xff0c;点击弹窗确定按钮&#xff1a;状态改变&#xff0c;并调取列表数据刷新页…

机器学习算法——聚类算法

目录 1. 概述2. K-MEANS算法2.1 工作流程2.2 代码实践2.3 Mini Batch K-Means2.4 存在问题2.5 K-MEANS可视化 3. DBSCAN算法3.1 基本概念3.2 工作流程3.3 代码实践3.4 DBSCAN算法可视化 1. 概述 聚类算法是一种无监督学习方法&#xff0c;用于将数据集中的对象分组或聚集成具有…

Camera Raw v16.0.0(PS Raw增效工具)

Camera Raw 16是一款允许摄影师处理原始图像文件的软件PS增效工具。原始图像文件是未经相机内部软件处理的数码照片&#xff0c;因此包含相机传感器捕获的所有信息。Camera Raw 为摄影师提供了一种在将原始文件转换为更广泛兼容的格式&#xff08;如 JPEG 或 TIFF&#xff09;之…

低代码时代,如何运用JVS低代码表单组件单选与多选组件提升业务效率?

在现代化的数字界面中&#xff0c;组件是不可或缺的一部分。无论是在问卷调查、投票&#xff0c;还是在购物车等场景中&#xff0c;单选和多选组件都扮演着重要角色。它们让用户能够在一系列选项中做出决定&#xff0c;从而提高交互的效率和用户体验。 JVS低代码表单组件中提供…

数据黑洞,正在悄悄吞噬你的门店业绩

互联网兴起以来&#xff0c;线下门店的数字化程度始终落后于线上。一个重要的原因是&#xff1a;线下信息不像线上那样简单、集中、易于统计。很多重要数据隐藏于「黑洞」之中&#xff0c;收集和分析成本极为高昂。这极大束缚了门店业绩的提升。 而反过来看&#xff0c;线下场景…