首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

一个简略高效的禁词过滤类

2012-09-14 
一个简单高效的禁词过滤类使用方法:import java.util.HashMappublic class SimpleTreeFilter{public clas

一个简单高效的禁词过滤类
使用方法:

import java.util.HashMap;public class SimpleTreeFilter{public class TreeNode{public char c;public HashMap<Character, TreeNode> next;public boolean isEnd=false;}HashMap<Character, TreeNode> head = new HashMap<Character, TreeNode>();public void addKeyword(String word) {word=word.toLowerCase();int len = word.length();if(len==0){return;}char firstChar = word.charAt(0);TreeNode node;if(head.containsKey(firstChar)){node = head.get(firstChar);}else{node = new TreeNode();node.c=firstChar;head.put(firstChar, node);}for(int i=1;i<len;i++){char c=word.charAt(i);if(node.next==null){node.next = new HashMap<Character, TreeNode>();}if(node.next.containsKey(c)){node = node.next.get(c);}else{TreeNode tNode = new TreeNode();tNode.c=c;node.next.put(c, tNode);node = tNode;}}node.isEnd=true;}public String contains(String line) {int len = line.length();line=line.toLowerCase();for(int i=0;i<len;i++){char c=line.charAt(i);if(head.containsKey(c)){TreeNode node = head.get(c);if(node.isEnd==true){return (c+"").toLowerCase();}int j=i+1;while(j<len){char cTemp = line.charAt(j);if(node.next.containsKey(cTemp)){node = node.next.get(cTemp);if(node.isEnd==true){return line.substring(i,j+1).toLowerCase();}}else{break;}j++;}}}return null;}}

热点排行