820. 单词的压缩编码

news2025/2/23 6:15:48

820. 单词的压缩编码

  • 原题链接:
  • 完成情况:
  • 解题思路:
  • 参考代码:
    • __820单词的压缩编码__存储后缀
    • __820单词的压缩编码__字典前缀树

原题链接:

820. 单词的压缩编码

https://leetcode.cn/problems/short-encoding-of-words/description/

完成情况:

在这里插入图片描述

解题思路:

/**
 题目注解:
    就是单词意思注解,
    即:words = ["time", "me", "bell"]
    想快速记忆,我们就可以用 s = "time#bell#" 和 indices = [0, 2, 5] 。
    #代表,当前单词的结束,indices代表我开始读取单词的起始索引位置。

 简单方法:
    从头到尾计算,然后的话,就是当计算第一个的时候,如果当前单词又为后续单词的开头,那么我又可以再开一个索引号。
    然后同时我还需要记住,构建的时候用#强制结尾,然后最后需要返回的只是我构建出来的模糊匹配的长度。

 * @param words
 * @return
 */

参考代码:

__820单词的压缩编码__存储后缀

package LeetCode中等题;

import java.util.Arrays;
import java.util.HashSet;
import java.util.Set;

public class __820单词的压缩编码__存储后缀 {
    /**
     题目注解:
        就是单词意思注解,
        即:words = ["time", "me", "bell"]
        想快速记忆,我们就可以用 s = "time#bell#" 和 indices = [0, 2, 5] 。
        #代表,当前单词的结束,indices代表我开始读取单词的起始索引位置。

     简单方法:
        从头到尾计算,然后的话,就是当计算第一个的时候,如果当前单词又为后续单词的开头,那么我又可以再开一个索引号。
        然后同时我还需要记住,构建的时候用#强制结尾,然后最后需要返回的只是我构建出来的模糊匹配的长度。

     * @param words
     * @return
     */
    public int minimumLengthEncoding(String[] words) {
        //输入:words = ["time", "me", "bell"]

        //构造一个去重Set集合childTab,避免掉重复单词,然后按顺序构成一个链表List
        Set<String> childTab = new HashSet<String>(Arrays.asList(words));
        for (String word:words){
            for (int k=1;k< word.length();k++){
                //    移出掉0-k
                childTab.remove(word.substring(k));
            }
        }
        int res = 0;
        for (String word:childTab){
            res+=word.length()+1;
        }
        return res;
    }

}

__820单词的压缩编码__字典前缀树

package LeetCode中等题;

import java.util.HashMap;
import java.util.Map;

public class __820单词的压缩编码__字典前缀树 {

    public int minimumLengthEncoding(String[] words) {
        DictTrieNode dictTrie = new DictTrieNode();
        Map<DictTrieNode,Integer> nodes = new HashMap<DictTrieNode,Integer>();
        for (int i=0;i< words.length;i++){
            String word = words[i];
            //一个words里面的元素,作为一个单独的字典去进行计算,然后如果单词寻找的过程中,
            //我发现如果有计算到重复元素的话,那么就可以给他单独再开一个位置去index出来。
            DictTrieNode cur = dictTrie;
            for (int j = word.length()-1;j>=0;j--){
                cur = cur.getChildren(word.charAt(j));
            }
            nodes.put(cur,i);
        }
        int res = 0;
        for (DictTrieNode node: nodes.keySet()){    // // 使用 keySet() 方法获取键的集合
            if (node.count == 0){
                res+=words[nodes.get(node)].length() + 1;
            }
        }
        return res;
    }

    class DictTrieNode{     //就像前面提到的,字母一共就只有26个,那么你可以尝试选择构造一个包含有26个单词的数组去进行二叉树的遍历尝试。
        DictTrieNode[] children;
        int count;

        DictTrieNode(){
            children = new DictTrieNode[26];
            count = 0;
        }

        public DictTrieNode getChildren(char c) {
            if (children[c - 'a'] == null){
                children[c - 'a'] = new DictTrieNode();
                count++;
            }
            return children[c - 'a'];
        }
    }

}

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

从Matrix-ResourceCanary看内存快照生成-ForkAnalyseProcessor(2)

不同于LeakCanary,在Matrix中,主要是通过Resource Canary来监控内存泄漏问题的,且监听的泄漏对象只支持Activity,官方说明如下: 结合分析LeakCanary的经验可知,要实现Activity内存泄漏监听,总体上应该要实现两大功能: Activity生命周期监控查找泄漏对象并得到GC Root P…

2023-9-3 分解质因数

题目链接&#xff1a;分解质因数 #include <iostream>using namespace std;void divide(int n) {for(int i 2; i < n / i; i ){if(n % i 0){int res 0;while(n % i 0){n / i;res ;}cout << i << << res << endl;}}if(n > 1) cout &l…

ZDH-权限模块

本次介绍基于ZDH v5.1.2版本 目录 项目源码 预览地址 安装包下载地址 ZDH权限模块 ZDH权限模块-重要名词划分 ZDH权限模块-菜单管理 ZDH权限模块-角色管理 ZDH权限模块-用户配置 ZDH权限模块-权限申请 项目源码 zdh_web: GitHub - zhaoyachao/zdh_web: 大数据采集,抽…

SWAT-MODFLOW地表水与地下水耦合

耦合模型被应用到很多科学和工程领域来改善模型的性能、效率和结果&#xff0c;SWAT作为一个地表水模型可以较好的模拟主要的水文过程&#xff0c;包括地表径流、降水、蒸发、风速、温度、渗流、侧向径流等&#xff0c;但是对于地下水部分的模拟相对粗糙&#xff0c;考虑到SWAT…

Java:Springboot和React中枚举值(数据字典)的使用

目录 1、开发中的需求2、实现效果3、后端代码4、前端代码5、接口数据6、完整代码7、参考文章 1、开发中的需求 开发和使用过程中&#xff0c;通常会涉及四个角色&#xff1a;数据库管理员、后端开发人员、前端开发人员、浏览者 数据库使用int类型的数值进行存储&#xff08;e…

PMD代码检查:属性应该在类的最顶部声明(FieldDeclarationsShouldBeAtStartOfClass)

https://docs.pmd-code.org/pmd-doc-6.55.0/pmd_rules_java_codestyle.html#fielddeclarationsshouldbeatstartofclass 属性的声明应该在类的最顶部&#xff0c;即在方法声明、构造器、初始化、内部类的前面。默认允许枚举声明、匿名类的声明放在属性的前面。 将下面语句放在…

Linux服务——nginx重写功能与反向代理

目录 一、nginx重写功能 if指令 return指令 set指令 break指令 rewrite指令 防盗链 二、反向代理 反向代理参数 反向代理——缓存功能 反向代理——ip穿透 反向代理——动静分离 反向代理——负载均衡 一、nginx重写功能 Nginx服务器利用 ngx_http_rewrite_module…

选择 Guava EventBus 还是 Spring Framework ApplicationEvent

文章首发地址 Spring Framework ApplicationEvent Spring Framework 的 ApplicationEvent 是 Spring 框架提供的一种事件机制&#xff0c;用于实现发布和订阅事件的功能。它基于观察者模式&#xff0c;允许应用程序内的组件之间进行松耦合的通信。 下面是关于 Spring Frame…

Linux开源防病毒引擎ClamAV

ClamAV官方地址&#xff1a;https://www.clamav.net 它支持Linux、BSD、windows、Mac OS X等系统。 在CentOS 8&#xff08;Tencent OS 3.1&#xff09;安装非常便利&#xff0c;可以使用yum。 yum install clamav 安装成功&#xff0c;就可以使用它进行病毒扫描检查了。 c…

设计模式系列-创建者模式

一、上篇回顾 上篇我们主要讲述了抽象工厂模式和工厂模式。并且分析了该模式的应用场景和一些优缺点&#xff0c;并且给出了一些实现的思路和方案,我们现在来回顾一下&#xff1a; 抽象工厂模式&#xff1a;一个工厂负责所有类型对象的创建&#xff0c;支持无缝的新增新的类型对…

2.5 关系查询优化

这段话主要讨论了关系模型在数据库领域中的查询优化问题。以下是对这段文字的简要解释&#xff1a; 1. **关系模型的优缺点**&#xff1a;虽然关系模型有许多优点&#xff0c;但它也有一些缺点&#xff0c;最主要的缺点是查询效率。如果没有适当的优化&#xff0c;查询的速度可…

git在linux情况下设置git 命令高亮

只需要执行下面这个命令&#xff0c;这样就可以在查看git status明亮的时候高亮显示。 git config --global color.status auto未设置前 谁知之后

【leetcode 力扣刷题】字符串匹配之经典的KMP!!!

字符串子串匹配相关 28. 找出字符串中第一个匹配项的下标暴力求解KMP 459. 重复的子字符串暴力求解在SS中找S 以下是能用KMP求解的算法题&#xff0c;KMP是用于字符串匹配的经典算法【至今没学懂………啊啊啊】 28. 找出字符串中第一个匹配项的下标 题目链接&#xff1a;28. 找…

Vue学习(三)

一、列表渲染 v-for指令 用于展示列表数据 语法<li v-for"(item, index) in items" :key"index"></li>key可以是index,最好是遍历对象的唯一标识 可遍历&#xff1a;数组、对象 <!DOCTYPE html> <html lang"en">&l…

探究Vue3中的Composition API:优化组件逻辑的新利器

一、toRef函数 在 Vue 3.0 中&#xff0c;引入了一种新的响应式 API,即 toRef。toRef 函数可以将一个普通值转换为响应式引用类型&#xff0c;这样就可以在模板中直接使用这个响应式引用类型的属性&#xff0c;并且当该属性发生变化时&#xff0c;视图会自动更新。 <templat…

【C++代码】用栈实现队列,用队列实现栈--代码随想录

队列是先进先出&#xff0c;栈是先进后出。卡哥给了关于C方向关于栈和队列的4个问题&#xff1a; C中stack 是容器么&#xff1f; 使用的stack是属于哪个版本的STL&#xff1f; 使用的STL中stack是如何实现的&#xff1f; stack 提供迭代器来遍历stack空间么&#xff1f; …

测试开发【Mock平台】09开发:项目管理(五)搜索、删除和Table优化

【Mock平台】为系列测试开发教程&#xff0c;从0到1编码带你一步步使用Spring Boot 和 Antd React框架完成搭建一个测试工具平台&#xff0c;希望作为一个实战项目对各位的测试开发学习之路有帮助&#xff0c;大奇一个专注测试技术干货原创与分享的家伙。 Mock平台系统项目基本…

【大数据实训】基于Hive的北京市天气系统分析报告(二)

博主介绍&#xff1a;✌全网粉丝6W,csdn特邀作者、博客专家、Java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于大数据技术领域和毕业项目实战✌ &#x1f345;文末获取项目联系&#x1f345; 目录 1. 引言 1.1 项目背景 1 1.2 项目意义 1 2.…

蓝队追踪者工具TrackAttacker,以及免杀马生成工具

蓝队追踪者工具TrackAttacker&#xff0c;以及免杀马生成工具。 做过防守的都知道大HW时的攻击IP量&#xff0c;那么对于这些攻击IP若一个个去溯源则显得效率低下&#xff0c;如果有个工具可以对这些IP做批量初筛是不是更好&#xff1f; 0x2 TrackAttacker获取 https://githu…

[管理与领导-67]:IT基层管理者 - 辅助技能 - 4- 职业发展规划 - 评估你与公司的八字是否相合

目录 前言&#xff1a; 一、概述 二、八字相合的步骤 2.1 企业文化是否相合 2.2.1 企业文化对职业选择的意义 2.2.2 个人与企业三观不合的结果 2.2.3 什么样的企业文化的公司不能加入 2.2 公司的发展前景 2.3 公司所处行业发展 2.4 创始人的三观 2.5 创始人与上司的…