字典树运用

金蝶云星空初级实施认证考题 Q4.[单选题] (1.5分) 总账中的多账簿账表主要是基于什么进行查看的Q47.[多选题] (2.5分) 销售订单的收款计划页签勾选预收之后,预收控制环节可以控制哪些节点? 阅读详情

字典树

字典树又叫 前缀树, 是一种树形数据结构,用于高效地存储和检索字符串数据集中的键。这一数据结构有相当多的应用情景,例如自动补全和拼写检查。

LC208 创建字典树

这是一个字符串字典树的典型例子,字符串中只包含26个小写字母。
在这里插入图片描述
代码为:

class Trie {

    class Node{
        boolean end;
        Node[] son = new Node[26];
    }

    private Node root;

    public Trie() {
        root = new Node(); //伪根
        
    }
    
    public void insert(String word) {
        Node cur = root;
        for(int i = 0; i < word.length(); i++){
            char c = word.charAt(i);
            if(cur.son[c - 'a'] == null){
                cur.son[c - 'a'] = new Node();
            }
            cur = cur.son[c - 'a'];
        }
        cur.end = true;
        
    }
    
    public boolean search(String word) {
        Node cur = root;
        for(char ch : word.toCharArray()){
            ch -= 'a';
            if(cur.son[ch] == null){
                return false;
            }
            cur = cur.son[ch];
        }
        if(cur.end != true){
            return false;
        }
        return true;
        
    }
    
    public boolean startsWith(String prefix) {
        Node cur = root;
        for(char ch : prefix.toCharArray()){
            ch -= 'a';
            if(cur.son[ch] == null){
                return false;
            }
            cur = cur.son[ch];
        }
        return true;
        
    }
}

0-1字典树

应用:求最大异或和
在这里插入图片描述
代码如下:

import java.io.*;
import java.util.List;
import java.util.ArrayList;

class Main{

    static class Node{
        Node[] son = new Node[2];
        int count = 0;
    }

    static void insert(Node root, int num){
        Node cur = root;
        cur.count++;
        for(int i = 31; i >= 0; i--){
            int bit = (num >> i) & 1;
            if(cur.son[bit] == null){
                cur.son[bit] = new Node();
            }
            cur = cur.son[bit];
            cur.count++;
        }

    }

    static void remove(Node root, int num){
        Node cur = root;
        cur.count--;
        for(int i = 31; i >= 0; i--){
            int bit = (num >> i) & 1;
            cur = cur.son[bit];
            cur.count--;  //不物理上删除任何节点,采用count来表示节点删除
        }
    }

    static int query(Node root, int num){
        Node cur = root;
        if(root.count == 0){
            return -1;
        }
        int res = 0;
        for(int i = 31; i >= 0; i--){
            int bit = (num >> i) & 1;
            int orBit = 1 - bit;
            if(cur.son[orBit] != null && cur.son[orBit].count > 0){
                res += (1 << i);
                cur = cur.son[orBit];
            } else {
                cur = cur.son[bit];
            }
        }
        return res;
    }
    
    

    public static void main(String[] args) throws IOException{
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StreamTokenizer st = new StreamTokenizer(br);
        st.parseNumbers();
        st.nextToken();
        int n = (int)st.nval;
        
        Node root = new Node();
        
        for(int k = 0; k < n; k++){
            st.nextToken();
            int ops = (int)st.nval;

            st.nextToken();
            int num = (int)st.nval;

            if(ops == 1){
                insert(root, num);
                

            } else if(ops == 2){
               remove(root, num);
                
            } else {
                
                int res = query(root, num);
                System.out.println(res);

            }
        }
    }   

}
pymol 动画简单制作,gif、mp4导出 参考: https://www.youtube.com/watch?v=G77K9Lro8js1、直接Movie下Program下,Camera Loop下Nutate下选择,这里选择30degover4 sec;如果要动画过渡自然,可以在这4sec后面再Append 1sec;如果需要两个视角,既可以再把窗口蛋白定位到比如配体,不用管中间过程怎么定位过去配体,再Program下,Camera Loop下Nutate下选择,这里选择30degover4 sec添加;最后如果要整体形成个循环播放,可以在这4s 阅读详情

相关推荐

[ADS]单端电感和差分电感的感值和Q值计算公式

单端电感和差分电感的感值和Q值计算公式

乾巽的博客 1万+

字典树的简单运用

简介: 下面介绍字典树也叫前缀树 Trie树,即字典树,又称单词查找树或键树,是一种树形结构,是一种哈希树的变种。典型应用是用于统计和排序大量的字符串(但不仅限于字符串),所以经常被搜索引擎系统用于文本词频统计。它的优点是:最大限度地减少无谓的字符串比较。若要在n个字符串中查找某个字符串,如果使用暴力方法就需要逐个匹配字符串,复杂度是O(n * m),m是字符串平均长度。还有一种比较快的方法就是字典树,像查单词那样,一次找一个字母,查找任意单词,复杂度为O(m),m是查询或插入字符串的长度。 Trie

qq_51526341的博客 355

oVirt 4.4.10超详细安装指南:从零搭建企业级虚拟化环境(附常见错误排查)

本文提供了oVirt 4.4.10企业级虚拟化平台的超详细安装指南,涵盖环境规划、系统准备、Engine安装配置、计算节点部署、存储系统集成及高级运维技巧。通过实战操作手册和常见错误排查方法,帮助用户从零搭建稳定高效的虚拟化环境,特别适合企业IT管理员参考实施。

wasm7browser的博客 351

字典树的运用

思想 字典树可以处理公共前缀

踏出一步就不想踏回一步 415

OFDM调制matlab仿真详细代码

MATLAB仿真代码 % ================================================== % 作者: 肆拾伍 % 时间:11/30 2019 % 版本:V3 % =================OFDM仿真参数说明:================ % % 子载波数 carrier_count ---200 % 总符号数 symbol_count ...

肆拾伍的博客 3万+

淘特App x-sign参数逆向实战:从抓包到算法定位

本文详细解析了淘特App的x-sign参数逆向过程,从抓包分析到算法定位,涵盖了使用jadx-gui进行静态分析、Frida动态Hook验证以及Native层算法还原等关键技术。文章重点介绍了x-sign参数的生成机制及其在阿里系应用中的安全防护策略,为逆向工程师提供了实用的调试技巧和对抗策略。

5b6n7m8的博客 228

trie字典树的二进制运用

trie字典树的二进制运用

cfscsdn的博客 357

5.30华为OD机试真题 新系统 - 链表数字游戏 (Java/Py/C/C++/Js/Go)

5.30华为OD机试真题 新系统 - 链表数字游戏 (Java/Py/C/C++/Js/Go)

算法大师! 1119

HDU 5384 Danganronpa (字典树运用)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5384 题面: Danganronpa Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Others) Total Submission(s): 512    Accepted

David_Jett 1266

使用node-red网关读取modbus设备点表,并上传到市政低碳平台来统计数据

最近做了一个物联网项目,具体是这样的,利用node-red网关盒子,来采集Modbus设备的点表,然后将数据转换,封装,最终上传到市政的低碳平台。上一步封装了点表的数据,调用低碳平台还需要账号密码,建筑id,这些都是固定信息,所以我们单独提出来。上一步获取到了原始的点表数据,下一步就是将这些点表数据与在低碳平台创建的采集的对应起来,并且设置好分类。读取modbus的节点,会有两个输出,我是使用的第一个输出。msg.meters 是一个数组,里面的每一个元素都是一个点表,比如厨房用水,园区照明,

知无涯 948

在 ABAP CDS View 里把 Conversion Functions 用到极致:FLTP 精度、单位换算、货币换算与小数位处理的工程化实践

数据格式转换在真实项目中比业务逻辑更容易引发问题。ABAP CDS中的转换函数(如FLTP_TO_DEC、UNIT_CONVERSION、CURRENCY_CONVERSION和DECIMAL_SHIFT)可帮助在数据库层统一数据口径,避免应用层重复处理。这些函数支持数值精度治理、单位换算、货币转换和小数位调整,能显著提升报表性能并减少逻辑分散。通过将格式转换前移到数据模型层,可以确保服务层和UI层的数据一致性,同时降低接口传输错误风险。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 2351

【暖*墟】 #trie# 字典树的运用

Trie,又称字典树 是一种用于实现字符串快速检索的多叉树结构。 每个节点都拥有若干个字符指针,若在插入或检索字符串时扫描到一个字符c , 就沿着当前节点的c这个字符指针,走向该指针指的节点。 下面我们来详细讨论Trie的基本操作过程。 初始化 一棵空Trie仅包含一个根节点,该点的字符指针均指向空。 ********* 根节点表示空串。********* 插入 当需...

Christy2222的博客 178

JEDEC JESD51-14 瞬态双界面测试方法详解

(瞬态双界面测试方法,用于测量具有单路径热流的半导体器件的结到壳热阻 RθJC,包括结到壳顶部 RθJCT 和结到壳底部 RθJCB)。该标准于 2010 年发布(版本 JESD51-14.1),旨在提供一种准确、可重复的瞬态方法来测量功率半导体器件(如 MOSFET、IGBT)的结到壳热阻(RthJC),取代传统的稳态测量方法(如 MIL-STD-883E METHOD 1012.1)。方法,通过比较两种不同热界面材料(TIM)下的瞬态温度响应曲线,提取 RthJC,而无需直接测量壳温(Tc)。

专注于前沿技术的探索与实践,热衷于从代码逻辑、架构设计到行业应用等多维度深挖技术本质。期待在技术之路上与你共同成长~ 608

字典树在树与字符串中的运用

1、首先是在字符串中,如果字符串全是大写字母或者是小写字母就可以用字典树进行存储。这样可以少存很多的字母,比如如果暴力的用数组存元素 如果当我们存入abc与axs时,当我们想找到abc则需要遍历所有子串,时间复杂度是O(n)的。而如果用字典树存储,直接找到a开头的字母,一直往下遍历,时间复杂度是O(1).的 树的存储方式是用一个二维数组son[][]来存储。

m0_74847145的博客 118

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

编程学习笔记13--字典树及其运用

字典树简介 字典树 又称单词查找树,Trie树,是一种树形结构,是一种哈希树的变种。典型应用是用于统计,排序和保存大量的字符串(但不仅限于字符串),所以经常被搜索引擎系统用于文本词频统计。它的优点是:利用字符串的公共前缀来节约存储空间,最大限度地减少无谓的字符串比较,查询效率比哈希表高。 特点  1)根节点不包含字符,除根节点外每一个节点都只包含一个字符。  2)从根节点到某

奋斗吧,少年! 679

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

Hat’s Words(字典树的运用)

个人心得:通过这道题,对于树的运用又加深了一点,字典树有着他独特的特点,那个指针的一直转换着实让我好生想半天, 不得不佩服这些发明算法人的大脑。 这题的解决方法还是从网上找到的,还好算法是自己实现得,没错!组合体只要进行分割再暴力搜索就好了, 步骤就是根据得到的字符串建立字典树,然后一一找寻时,一次拆开,只要俩边都满足在字典树里面找的到就是我们所要找的了。 关于字典树的建立的话,因为他是不...

weixin_30696427的博客 129

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

648. 单词替换 : 字典树的经典运用

题目描述 这是 LeetCode 上的 648. 单词替换 ,难度为 中等。 Tag : 「字典树」 在英语中,我们有一个叫做 词根(root) 的概念,可以词根后面添加其他一些词组成另一个较长的单词——我们称这个词为 继承词(successor)。例如,词根an,跟随着单词 other(其他),可以形成新的单词 another(另一个)。 现在,给定一个由许多词根组成的词典 dictionary 和一个用空格分隔单词形成的句子 sentence。你需要将句子中的所有

宫水三叶的刷题日记 336

ACdream群OJ 1063 字典树的运用

传送门:点击打开链接 平衡树 Time Limit: 4000/2000MS (Java/Others)Memory Limit: 128000/64000KB (Java/Others) SubmitStatisticNext Problem Problem Description 神奇的cxlove有一颗平衡树,其树之神奇无法用语言来描述 OrzOrz。 这棵树支持3种操作: 1

上决╇ф的ACM 556

初级字典树查找在 Emoji、关键字检索上的运用 Part-2

系列索引 Unicode 与 Emoji 字典树 TrieTree 与性能测试 生产实践 在有了 Unicode 和 Emoji 的知识准备后,本文进入编码环节。 我们知道 Emoji 是 Unicode 字符序列后,自然能够理解 Emoji 查找和敏感词查找完全是一回事:索引Emoji列表或者关键词、将用户输入分词、遍历筛选。 本文不讨论适用于 Lucene、Elastic Se...

denggua0627的博客 283

*hdu 5536(字典树的运用)

Input The first line of input contains an integerTindicating the total number of test cases. The first line of each test case is an integern, indicating the number of chips produced...

weixin_34323858的博客 71

字典树的运用,实现字符串的精确匹配与模糊匹配

背景 实现 项目里面的一个 字符串检索功能(无关业务,只写实现,后续 需要融入项目,会把树生成一段二进制blob 放到内存,变长的字节储存listsize 以及一些偏移 会重新构造搜索算法,预计一周后会继续与大家分享) 需求 现有一棵树(普通树)有10w个字符串,索引为ID,现要实现2个功能 1: 给定一字符串快速查找该字符串的位置 2:输入一字符串 每输入...

breakpoints_的博客 4010

Xor Sum HDU - 4825 (字典树的运用)

Zeus 和 Prometheus 做了一个游戏,Prometheus 给 Zeus 一个集合,集合中包含了N个正整数,随后 Prometheus 将向 Zeus 发起M次询问,每次询问中包含一个正整数 S ,之后 Zeus 需要在集合当中找出一个正整数 K ,使得 K 与 S 的异或结果最大。Prometheus 为了让 Zeus 看到人类的伟大,随即同意 Zeus 可以向人类求助。你能证明人类

Tsingcheng_liu的博客 343

【面试高频题】难度 3/5,字典树热门运用题

只是粗略分析,实际上如果候选集长度越大的话,说明两个候选集是重合度是越高的,从后往前找的过程是越快结束的,可以通过方程算出一个双指针的理论最大比较次数。篇,系列开始于 2021/01/01,截止于起始日 LeetCode 上共有 1916 道题目,部分是有锁题,我们将先把所有不带锁的题目刷完。在仓库地址里,你可以看到系列文章的题解链接、系列文章的相应代码、LeetCode 原题链接和其他优选题解。如果存在不止一个满足要求的下标,返回其中 最大的下标。次调用的话,必然会面临大量的重复查询,可通过引入。

宫水三叶的刷题日记 351

初级字典树查找在 Emoji、关键字检索上的运用 Part-1

系列索引 Unicode 与 Emoji 字典树 TrieTree 与性能测试 生产实践 前言 通常用户自行修改资料是很常见的需求,我们规定昵称长度在2到10之间。假设用户试图使用表情符号 ‍????‍????‍????‍????作为用户名,请求是否合法? 打开浏览器控制台,输入 '????‍????‍????‍????'.length,打印结果是11。 公司项目涉及内容打印的,之前将 Emoji 显示成乱码、框框是家常便饭,而且...

denggua0627的博客 248

Trie树字典树简单运用——T1259:最短前缀

Trie树字典树简单运用——最短前缀 例题:计蒜客T1259:最短前缀 链接:https://vjudge.net/problem/%E8%AE%A1%E8%92%9C%E5%AE%A2-T1259 题目 一个字符串的前缀是从该字符串的第一个字符起始的一个子串。 例如 “carbon” 的字串是: “c”, “ca”, “car”, “carb”, “carbo”, 和 “carbon”。注意到这里我们不认为空串是子串, 但是每个非空串是它自身的子串. 我们现在希望能用前缀来缩略的表示单词。例如, “c

Frankie_Ku的博客 432
上一篇: 八股打卡(七)
code120302
博客等级 码龄7年 195粉丝 38原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值