这个Trie原先用C++就敲得很熟了,看了蓝桥杯的视频后学会把一个功能这样封装起来,以后用的时候就很爽可以直接调用了,所以就用Java写了;

public class Trie {
private final int SIZE = 26;
private final int HEAD = 'a';
private int cnt;
private int tail;
private Trie[] next = new Trie[SIZE];
void insert(String s) {
Trie now = this;
for (int i = 0; i < s.length(); i++) {
int id = s.charAt(i) - HEAD;
if (now.next[id] == null) {
now.next[id] = new Trie();
}
now = now.next[id];
now.cnt++;
}
now.tail++;
}
int queryPrefix(String s) {
Trie now = this;
for (int i = 0; i < s.length(); i++) {
int id = s.charAt(i) - HEAD;
if (now.next[id] == null) {
return 0;
}
now = now.next[id];
}
return now.cnt;
}
int queryWord(String s) {
Trie now = this;
for (int i = 0; i < s.length(); i++) {
int id = s.charAt(i) - HEAD;
if (now.next[id] == null) {
return 0;
}
now = now.next[id];
}
return now.tail;
}
void deletePrefix(String s) {
int sum = queryPrefix(s);
if (sum == 0) {
return;
}
Trie now = this;
for (int i = 0; i < s.length(); i++) {
int id = s.charAt(i) - HEAD;
now.next[id].cnt -= sum;
if (now.next[id].cnt == 0) {
now.next[id] = null;
return;
}
}
}
void deleteWord(String s) {
int sum = queryWord(s);
if (sum == 0) {
return;
}
Trie now = this;
for (int i = 0; i < s.length(); i++) {
int id = s.charAt(i) - HEAD;
now.next[id].cnt -= sum;
if (now.next[id].cnt == 0) {
now.next[id] = null;
return;
}
}
now.tail -= sum;
}
}

最新文章

  1. H5 本地存储一
  2. asp.net 微信开发失效汇总
  3. 安装ss
  4. C语言初学 简单定义圆的面积计算问题
  5. 分享一个option样式传递给select当前选中样式
  6. ARM流水线(pipeline)
  7. JDBC技术
  8. Linux命令—文件目录
  9. odoo学习
  10. 408 JavaScript 变量、数据类型、正则
  11. AOP面向切面编程JAVA动态代理实现用户权限管理(实现篇)
  12. 【腾讯Bugly干货分享】职场中脱颖而出的成长秘诀
  13. Dynamics 365-部分用户访问环境缓慢
  14. bzoj4025 二分图 [分治,并查集]
  15. springMVC3学习--ModelAndView对象(转)
  16. uvm设计分析——report
  17. Servlet开发
  18. JDK1.5新特性,基础类库篇,System类
  19. 20145226夏艺华 《Java程序设计》 课堂实践
  20. Django中多种重定向方法使用

热门文章

  1. java日志处理汇总
  2. JAVA初学者——标识符命名规则及数据类型的转换
  3. UML-如何画操作契约?
  4. oracle sql语句学习(一)
  5. tif图片压缩
  6. Unicode的认识
  7. iOS 加急审核的办法
  8. 吴裕雄--天生自然 PYTHON3开发学习:面向对象
  9. springMVC的注解@PathVariable是什么?详情及用法解析
  10. dsp