网站首页
网站导航
Ctrl+D收藏
首 页
代码段
源码包
文档库
工具箱
代码语言
.
CSharp
.
JS
Java
Asp.Net
C
MSSQL
PHP
Css
PLSQL
Python
Shell
EBS
ASP
Perl
ObjC
VB.Net
VBS
MYSQL
GO
Delphi
AS
DB2
Domino
Rails
ActionScript
Scala
代码分类
文件
系统
字符串
数据库
网络相关
图形/GUI
多媒体
算法
游戏
Jquery
Extjs
Android
HTML5
菜单
网页交互
WinForm
控件
企业应用
安全与加密
脚本/批处理
开放平台
其它
【
JS
】
脏字过滤
作者:
dezai
/ 发布于
2014/4/4
/
1677
脏字过滤
用Trie树实现脏字过滤程序 例子 t := NewTrie() t.Inster("脏话") t.Inster("mb") s := t.Replace("不能说脏话也不能说mb") 输出结果: 不能说也不能说 package trie import ( "unicode/utf8" ) type Trie struct { Root *TrieNode } type TrieNode struct { Children map[rune]*TrieNode End bool } func NewTrie() Trie { var r Trie r.Root = NewTrieNode() return r } func NewTrieNode() *TrieNode { n := new(TrieNode) n.Children = make(map[rune]*TrieNode) return n } func (this *Trie) Inster(txt string) { if len(txt) < 1 { return } node := this.Root key := []rune(txt) for i := 0; i < len(key); i++ { if _, exists := node.Children[key[i]]; !exists { node.Children[key[i]] = NewTrieNode() } node = node.Children[key[i]] } node.End = true } func (this *Trie) Replace(txt string) string { if len(txt) < 1 { return txt } node := this.Root key := []rune(txt) var chars []rune = nil slen := len(key) for i := 0; i < slen; i++ { if _, exists := node.Children[key[i]]; exists { node = node.Children[key[i]] for j := i + 1; j < slen; j++ { if _, exists := node.Children[key[j]]; exists { node = node.Children[key[j]] if node.End == true { if chars == nil { chars = key } for t := i; t <= j; t++ { c, _ := utf8.DecodeRuneInString("*") chars[t] = c } i = j node = this.Root break } } } node = this.Root } } if chars == nil { return txt } else { return string(chars) } } //该片段来自于http://outofmemory.cn
评论列表
本站所提供的代码,版权归原作者所有,若有侵犯作者版权,请与我们联系,我们将立即删除或修改。谢谢!
本站所有代码发布及提供者。
试试其它关键字
脏字过滤
同语言下
.
Jquery搜索框获取回车事件
.
H5页面添加倒计时,然后自动跳转
.
通过user-agent判断h5页面是在哪个手机App(QQ、微信
.
nginx 禁止未绑定的域名访问
.
JavaScript 获取按键,并屏蔽系统 Window 事件
.
H5之只允许微信浏览器打开,禁止从外部浏览器访问
.
微信打开网址添加在浏览器中打开提示的办法
.
实现JS复制、粘贴,Chrome/Firefox下可用
.
video视频播放,play()、pause()、duration时长、onen
.
HTML5实现MP3上传前的预览和播放时长的获取
可能有用的
.
SQL查询 多列合并成一行用逗号隔开
.
一行一行读取txt的内容
.
C#动态修改文件夹名称(FSO实现,不移动文件)
.
c# 移动文件或文件夹
.
c#图片添加水印
.
Java PDF转换成图片并输出给前台展示
.
网站后台修改图片尺寸代码
.
处理大图片在缩略图时的展示
.
实现对图片上传的接收
.
判断用户输入的是否为IP地址
dezai
贡献的其它代码
(
1065
)
.
双色球
.
列出所有物理网络适配器
.
快乐数的 Python 实现
.
计算当月还剩天数
.
猜属相
.
二十四小时时钟
.
每日一语
.
很酷的日历
.
超长日历表单
.
最简单的时钟
地图
本站
我们
服务
版权
联系
回馈
博客