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

北京做网站的公司上海网站推广服务公司

北京做网站的公司,上海网站推广服务公司,免费网站模板代码,政府门户网站建设的基本意义208. 实现 Trie (前缀树) 实现Trie树,网上教程一大堆,没啥可说的 public class Trie {private class Node {private int dumpli_num;该字串的重复数目, 该属性统计重复次数的时候有用,取值为0、1、2、3、4、5……private int prefix_num;///…

208. 实现 Trie (前缀树)

实现Trie树,网上教程一大堆,没啥可说的

public class Trie {private class Node {private int dumpli_num;该字串的重复数目,  该属性统计重复次数的时候有用,取值为0、1、2、3、4、5……private int prefix_num;///以该字串为前缀的字串数, 应该包括该字串本身!!!!!private Node childs[];此处用数组实现,当然也可以map或list实现以节省空间private boolean isLeaf;///是否为单词节点public Node() {dumpli_num = 0;prefix_num = 0;isLeaf = false;childs = new Node[26];}}private Node root;///树根public Trie() {///初始化trie 树root = new Node();}/*** 插入字串,用循环代替迭代实现** @param words*/public void insert(String words) {insert(this.root, words);}/*** 插入字串,用循环代替迭代实现** @param root* @param words*/private void insert(Node root, String words) {words = words.toLowerCase();转化为小写char[] chrs = words.toCharArray();for (int i = 0, length = chrs.length; i < length; i++) {///用相对于a字母的值作为下标索引,也隐式地记录了该字母的值int index = chrs[i] - 'a';if (root.childs[index] != null) {已经存在了,该子节点prefix_num++root.childs[index].prefix_num++;} else {///如果不存在root.childs[index] = new Node();root.childs[index].prefix_num++;}///如果到了字串结尾,则做标记if (i == length - 1) {root.childs[index].isLeaf = true;root.childs[index].dumpli_num++;}///root指向子节点,继续处理root = root.childs[index];}}public HashMap<String, Integer> getAllWords() {return preTraversal(this.root, "");}/*** 前序遍历。。。** @param root    子树根节点* @param prefixs 查询到该节点前所遍历过的前缀* @return*/private HashMap<String, Integer> preTraversal(Node root, String prefixs) {HashMap<String, Integer> map = new HashMap<String, Integer>();if (root != null) {if (root.isLeaf == true) {当前即为一个单词map.put(prefixs, root.dumpli_num);}for (int i = 0, length = root.childs.length; i < length; i++) {if (root.childs[i] != null) {char ch = (char) (i + 'a');递归调用前序遍历String tempStr = prefixs + ch;map.putAll(preTraversal(root.childs[i], tempStr));}}}return map;}/*** 查询某字串是否在字典树中** @param word* @return true if exists ,otherwise  false*/public boolean search(String word) {char[] chs = word.toLowerCase().toCharArray();Node tmpRoot = root;for (int i = 0, length = chs.length; i < length; i++) {int index = chs[i] - 'a';if (tmpRoot.childs[index] == null) {///如果不存在,则查找失败return false;}tmpRoot = tmpRoot.childs[index];}// 不能有孩子了return tmpRoot.isLeaf;}public boolean startsWith(String prefix) {char[] chrs = prefix.toLowerCase().toCharArray();Node tmpRoot = root;for (int i = 0, length = chrs.length; i < length; i++) {int index = chrs[i] - 'a';if (tmpRoot.childs[index] == null) {return false;}tmpRoot = tmpRoot.childs[index];}return true;}/*** 得到以某字串为前缀的字串集,包括字串本身! 类似单词输入法的联想功能** @param prefix 字串前缀* @return 字串集以及出现次数,如果不存在则返回null*/public HashMap<String, Integer> getWordsForPrefix(String prefix) {return getWordsForPrefix(this.root, prefix);}/*** 得到以某字串为前缀的字串集,包括字串本身!** @param root* @param prefix* @return 字串集以及出现次数*/private HashMap<String, Integer> getWordsForPrefix(Node root, String prefix) {HashMap<String, Integer> map = new HashMap<String, Integer>();char[] chrs = prefix.toLowerCase().toCharArray();for (int i = 0, length = chrs.length; i < length; i++) {int index = chrs[i] - 'a';if (root.childs[index] == null) {return null;}root = root.childs[index];}///结果包括该前缀本身///此处利用之前的前序搜索方法进行搜索return preTraversal(root, prefix);}
}

转载于:https://www.cnblogs.com/acbingo/p/9391172.html

http://www.lbrq.cn/news/2531557.html

相关文章:

  • 做网站上的在线支付怎么做长沙企业seo服务
  • js网站源码已到期信息流推广主要具有哪两大优势
  • 做网站店铺图片用什么软件搜索引擎营销策划方案
  • 东丰在线网站建设成都移动seo
  • 西宁网站制作宁波谷歌优化
  • 做局域网网站教程网站设计说明
  • 福田网站建设龙岗网站建设龙岗网站建设推销产品的万能句子
  • tp框架做展示网站重庆seo
  • 2017网站趋势百度推广一级代理商名单
  • 常德网站优化想开个网站怎样开
  • 网站建设装什么系统湖南企业竞价优化公司
  • 做网站域名需哪些百度手机下载安装
  • 长春服务好的网站建设北京seo相关
  • 免费网站系统下载广州疫情已经达峰
  • 有哪些网站是用vue做的网站快速有排名
  • 祥云网站建设公司 概况网站生成app工具
  • 怎么用手机做刷会员网站百度seo推广软件
  • 网站建设公司的组织架构免费二级域名注册网站有哪些
  • 一个jsp做的购物小网站百度一下首页
  • 雅客网站建设营销型网站内容
  • 做软件常用的网站有哪些软件搜索广告
  • 丹东做网站的手机百度官网
  • cdn 动态网站seo网站营销推广公司
  • wordpress2018版本seo推广系统
  • 2016大型注册域名网站有哪些杭州网站优化平台
  • php电子商务网站建设目前推广平台都有哪些
  • 哪个网站可以做店招私域营销
  • 企业网站开发要多少钱网站推广服务
  • 做网站具体步骤小红书seo
  • 市南区网站建设德州seo整站优化
  • 【最近公共祖先】ST表法
  • 【机器学习】机器学习新手入门概述
  • 1.5.Vue v-for 和 指令修饰符
  • 如何不让android studio自动换行
  • centos7安装Docker
  • AI产品经理手册(Ch3-5)AI Product Manager‘s Handbook学习笔记