本文介绍: 【LeetCode】每日一题 2023_11_23 HTML 实体解析器(调库/打工)

刷题前唠嗑

题目:HTML 实体解析器

题目链接1410. HTML 实体解析器

题目描述

代码解题思路

func entityParser(s string) (ans string) {
	return strings.NewReplacer(`"`, `"`, `'`, `'`, `>`, `>`, `<`, `<`, `⁄`, `/`, `&`, `&`).Replace(s)
}

对不起,我有罪,我堕入了库函数神教,直接用 golangstrings 标准库提供的字符串替换方法做了。无论是一个个打 if else 实现,又或者是用哈希打表实现,都太麻烦且打工了,随后就没忍住偷懒了呜呜

func entityParser(text string) string {
    entityMap := map[string]string{
        """: """,
        "'": "'",
        ">": ">",
        "&amp;lt;": "<",
        "&amp;frasl;": "/",
        "&amp;": "&",
    }

    i := 0
    n := len(text)
    res := make([]string, 0)
    for i < n {
        isEntity := false
        if text[i] == '&' {
            for k, v := range entityMap {
                if i + len(k) <= n && text[i : i + len(k)] == k {
                    res = append(res, v)
                    isEntity = true
                    i += len(k)
                    break
                }
            }
        }
        if !isEntity {
            res = append(res, text[i:i+1])
            i++
        }
    }
    return strings.Join(res, "") // 拼接字符串
}

其实实现起来也没什么意思~

结语

go 的 strings 包有了更多的理解应用

原文地址:https://blog.csdn.net/Locky136/article/details/134567986

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任

如若转载,请注明出处:http://www.7code.cn/show_14491.html

如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱suwngjj01@126.com进行投诉反馈,一经查实,立即删除

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注