【每日一题】1410. HTML实体解析器-2023.11.23

题目:

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"

提示:

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

解答:

代码:

复制代码
class Solution {
    public String entityParser(String text) {
        Map<String,String> map=new HashMap<>();
        map.put("&quot;","\"");
        map.put("'","'");
        map.put("&amp;","&");
        map.put("&gt;",">");
        map.put("&lt;","<");
        map.put("&frasl;","/");
        int n=text.length();
        StringBuilder sb=new StringBuilder();
        for(int i=0;i<n;){
            if(text.charAt(i)=='&'){
                int j=i+1;
                while(j<n&&j-i<6&&text.charAt(j)!=';') j++;
                String sub=text.substring(i,Math.min(j+1,n));
                if(map.containsKey(sub)){
                    sb.append(map.get(sub));
                    i=j+1;
                    continue;
                }
            }
            sb.append(text.charAt(i++));
        }
        return sb.toString();
    }
}

结果:

相关推荐
顶点多余2 小时前
那些在算法中适合巩固的知识点---1
java·前端·算法
AI情绪识别开源3 小时前
检信 ALLEMOTION OS 加密打包可执行程序 — 全面测试报告版本: v1.3功能测试 / 性能测试 /
开发语言·数据结构·人工智能·功能测试
罗西的思考4 小时前
【Agentic RL / 强化学习框架】Molt 设计解读
人工智能·算法·机器学习
hahaha60164 小时前
HLS高层次综合设计技巧--C++类和模板
图像处理·人工智能·算法·计算机视觉
多弗朗皮卡丘5 小时前
算法详解4:买卖股票的最佳时机系列(上)
算法
维克兜率天7 小时前
【维克】动量指标家族:RSI、ROC、CCI、Momentum全面解析
python·算法
AI情绪识别开源8 小时前
检信 AI 智能推广平台(代号:JX-Promote)
人工智能·算法·erlang
老当益壮梁奶奶8 小时前
Linux软件编程学习笔记(八):进程间通信详解(1)
linux·c语言·笔记·学习·算法
不会就选b9 小时前
算法日常・每日刷题--<BFS拓扑排序>4
算法
不正经学生9 小时前
C语言动态内存管理(上):堆上的自由与责任
c语言·开发语言·c++·算法·面试