字典树Java模板
来源:互联网 发布:电话来电显示软件 编辑:程序博客网 时间:2024/05/19 19:31
package binarytree; /** * 字典树的Java实现。实现了插入、查询以及深度优先遍历. * Trie tree's java implementation.(Insert,Search,DFS) * @author jiutianhe * @time 2012.10.16 */ public class TrieTree { final int MAX_SIZE=26; public class TrieTreeNode { int nCount;//记录该字符出现次数 char ch; //记录该字符 TrieTreeNode[] child; public TrieTreeNode() { nCount=1; child=new TrieTreeNode[MAX_SIZE]; } } //字典树的插入和构建 public void createTrie(TrieTreeNode node,String str){ if (str==null||str.length()==0) { return; } char[] letters=str.toCharArray(); for (int i = 0; i < letters.length; i++) { int pos = letters[i] - 'a'; if (node.child[pos] == null) { node.child[pos] = new TrieTreeNode(); }else { node.child[pos].nCount++; } node.ch=letters[i]; node = node.child[pos]; } } //字典树的查找 public int findCount(TrieTreeNode node,String str){ if (str==null||str.length()==0) { return -1; } char[] letters=str.toCharArray(); for (int i = 0; i < letters.length; i++) { int pos = letters[i] - 'a'; if (node.child[pos] == null) { return 0; }else { node=node.child[pos]; } } return node.nCount; } } [java] view plain copy 在CODE上查看代码片派生到我的代码片@Test public void trieTreeTest2(){ /** * Problem Description * 老师交给他很多单词(只有小写字母组成,不会有重复的单词出现),现在老师要他统计 * 出以某个字符串为前缀的单词数量(单词本身也是自己的前缀). */ String[] strs={ "banana", "band", "bee", "absolute", "acm", }; String[] prefix={ "ba", "b", "band", "abc", }; TrieTree tree = new TrieTree(); TrieTreeNode root=tree.new TrieTreeNode(); for (String s : strs) { tree.createTrie(root, s); } // tree.printAllWords(); for(String pre:prefix){ int num=tree.findCount(root,pre); System.out.println(pre+" "+num); } }
0 0
- 字典树Java模板
- 字典树模板(java)
- 字典树 模板
- 字典树【模板】
- 字典树模板
- 字典树模板
- 字典树模板
- 经典字典树模板
- hdu1247 字典树模板
- 字典树模板
- 字典树模板
- 字典树模板
- 字典树模板
- 字典树 模板
- 1251 字典树 模板
- 数据结构 字典树模板
- 字典树模板
- 字典树(trie)模板
- spring mvc 与struts2比较
- JavaScript Date类型 学习总结
- MFC 数据类型 (data types)
- 51Nod 活动安排问题(贪心)
- if条件 简单正则(大家是怎么看到这篇博客的求告知,有什么疑问想说的欢迎评论)
- 字典树Java模板
- Json (php+jquery)
- JSP内置对象out
- qt5 语法细节记录
- 使用 position-sticky 实现粘性布局
- ubuntu10.10下编译glibc
- laravel使用php多表查询
- 第三章 寄存器 (内存的访问)
- mysql查看所有存储过程,函数,视图,触发器,表