当前位置: 首页 > wzjs >正文

沈阳做网站哪个好谷歌广告推广怎么做

沈阳做网站哪个好,谷歌广告推广怎么做,个人主页自助建站,上海网站建设制作公司做leetcode的时候看到前缀树,听都没听过,后来才知道前缀树就是字典树。之前学过,在OJ项目中用字典树来实现黑白名单限制。浅浅复习一下吧 用字典树来实现黑白名单限制 实现步骤 (1)定义黑名单 import java.util.Arra…

做leetcode的时候看到前缀树,听都没听过,后来才知道前缀树就是字典树。之前学过,在OJ项目中用字典树来实现黑白名单限制。浅浅复习一下吧

用字典树来实现黑白名单限制 实现步骤

(1)定义黑名单

import java.util.Arrays;
import java.util.List;private static final List<String> blackList = Arrays.asList("Files", "exec");

(2)初始化字典树

 使用 HuTool 的 WordTree 初始化并插入黑名单中的单词。

import cn.hutool.core.text.WordTree;private static final WordTree WORD_TREE;static {// 初始化字典树WORD_TREE = new WordTree();// 插入黑名单中的单词WORD_TREE.addWords(blackList);
}

 (3)校验用户代码

 校验用户输入的代码是否包含黑名单中的禁用词。

// 校验代码中是否包含黑名单中的禁用词
FoundWord foundWord = WORD_TREE.matchWord(code);
if (foundWord != null) {System.out.println("包含禁止词:" + foundWord.getFoundWord());return null; // 或者抛出异常
}

(4)完整代码

import cn.hutool.core.text.WordTree;
import cn.hutool.core.text.WordTree.FoundWord;import java.util.Arrays;
import java.util.List;public class CodeValidator {// 定义黑名单private static final List<String> blackList = Arrays.asList("Files", "exec");// 初始化字典树private static final WordTree WORD_TREE;static {WORD_TREE = new WordTree();WORD_TREE.addWords(blackList);}// 校验用户代码public static String validateCode(String code) {// 校验代码中是否包含黑名单中的禁用词FoundWord foundWord = WORD_TREE.matchWord(code);if (foundWord != null) {System.out.println("包含禁止词:" + foundWord.getFoundWord());return null; // 或者抛出异常}return code; // 如果没有禁用词,返回代码}public static void main(String[] args) {String code = "System.out.println('Hello, World!');";String result = validateCode(code);if (result != null) {System.out.println("代码校验通过!");} else {System.out.println("代码校验失败!");}}
}

深入理解前缀树概念

1 定义

前缀树(Trie)是一种树形数据结构,用于高效地存储和检索字符串集合。它的每个节点表示一个字符,通过节点之间的连接来表示字符串。

2 结构特点

节点(Node)

  1. 每个节点表示一个字符。

  2. 每个节点包含一个布尔值 isEnd,表示当前节点是否是一个单词的结尾。

  3. 每个节点包含一个数组(或哈希表)next,用于存储其子节点,对应于下一个字符。

根节点(Root Node)

  1. 根节点不存储任何字符,但它是树的起点。
  2. 从根节点开始,通过路径上的字符可以拼接出完整的字符串。

3 前缀树的实现

1. Trie 类的定义
class Trie {private boolean isEnd; // 标记是否是单词结尾private Trie[] next;   // 存储子节点的数组public Trie() {isEnd = false; // 初始化时,当前节点不是单词结尾next = new Trie[26]; // 初始化一个大小为26的数组,对应26个小写字母}
}

 2. 插入单词(insert 方法)

public void insert(String word) {Trie node = this; // 从根节点开始for (char c : word.toCharArray()) {int index = c - 'a'; // 计算字符在数组中的索引if (node.next[index] == null) { // 如果当前字符对应的子节点不存在node.next[index] = new Trie(); // 创建一个新的 Trie 节点}node = node.next[index]; // 移动到子节点}node.isEnd = true; // 标记单词结尾
}
3. 搜索单词(search 方法)
public boolean search(String word) {Trie node = this; // 从根节点开始for (char c : word.toCharArray()) {int index = c - 'a'; // 计算字符在数组中的索引node = node.next[index]; // 移动到子节点if (node == null) { // 如果子节点不存在return false; // 单词不存在}}return node.isEnd; // 检查最后一个节点是否是单词结尾
}
4. 搜索前缀(startsWith 方法)
public boolean startsWith(String prefix) {Trie node = this; // 从根节点开始for (char c : prefix.toCharArray()) {int index = c - 'a'; // 计算字符在数组中的索引node = node.next[index]; // 移动到子节点if (node == null) { // 如果子节点不存在return false; // 前缀不存在}}return true; // 前缀存在
}
http://www.dtcms.com/wzjs/484353.html

相关文章:

  • 网站模块在线制作教程怎么做个网站
  • 越南美女做美食视频网站win10优化
  • 杭州市建设委员会武汉关键词seo
  • 新增备案网站巧克力软文范例200字
  • 淘宝店网站建设校园推广的方式有哪些
  • 怎么学做网站PHP香港疫情最新情况
  • 影视网站建设方案百度推广做二级域名
  • 没内涵网站源码惠州网络推广
  • 网站后台用什么做服务器品牌推广策略有哪几种
  • 蚌埠seo外包西安百度seo推广
  • 免费网站排名优化软件厦门seo推广优化
  • 阿里巴巴的网站二维码怎么做河南网站建设定制
  • 做视频背景音乐专用网站广告投放渠道有哪些
  • win7 做服务器开网站江苏百度推广代理商
  • 有什么网站可以做电子关键词优化技巧
  • 公司要我做网站_没有公司的材料是不是不可以做百度400电话
  • 网站中超链接怎么做搜seo
  • wordpress防恶意注册石家庄seo公司
  • 东莞++网站建设营销网页
  • 娄底建设网站的公司百度一下百度官网
  • 做制作网站找啥工作提升排名
  • 房地产型网站建设武汉seo首页
  • 登录seo信息网
  • 在线销售型网站谷歌三件套一键安装
  • 香港网站没有icp备案吗企业邮箱怎么开通注册
  • 南宁市网站7月新闻大事件30条
  • 做景区网站建设的公司怎么搜索关键词
  • 东莞做网站贴吧专业的制作网站开发公司
  • 上海网站排名优化怎么做谷歌浏览器安卓版下载
  • 有没有代做模型的网站产品经理培训哪个机构好