| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1346 人关注过本帖
标题:求屏蔽词判断算法!!!
只看楼主 加入收藏
clowder
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2010-4-14
结帖率:0
收藏
已结贴  问题点数:20 回复次数:5 
求屏蔽词判断算法!!!
假设有一个很长的屏蔽词数组 string[] badwords={};
对网络任意输入的文本strText,希望将strText文本中包含屏蔽词数组中的词语的替换成"**";
请求高效算法!因为该屏蔽词数组实在庞大,如果做到最高效是关键,而此应用应该是到处都有,请行家高手指点!
public string ConvertText( string[] badwords, string text )
{
    //算法
}
搜索更多相关主题的帖子: 算法 判断 
2010-04-14 08:16
mywaylgh
Rank: 8Rank: 8
来 自:厨房
等 级:蝙蝠侠
威 望:5
帖 子:188
专家分:729
注 册:2010-3-10
收藏
得分:6 
对这样的问题,个人只有map, hash_map以及unordered_map 的经验
更好的算法也同样期待

人生就像茶几 上面放着许多杯具

人生也像厨房 里面总有一些洗具
2010-04-14 11:37
clowder
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2010-4-14
收藏
得分:0 
回复 2楼 mywaylgh
说说你的思路,如何使用map等东西来处理这个问题?
2010-04-14 11:49
mywaylgh
Rank: 8Rank: 8
来 自:厨房
等 级:蝙蝠侠
威 望:5
帖 子:188
专家分:729
注 册:2010-3-10
收藏
得分:0 
估计不是你想要的结果

以 map为例,基本算法如下,从速度看,unorder_map最快,不过....很多编译器并不支持
1.按badword中词汇长度存为哈希表。
  如: map <string,int> badword_2;//存入两个字的词组
       map <string,ing> badword_3;//存入三个自的词组
       存入方式为如   badword_2["词组“] = 1;....

2.两个字,三个字。。。的扫描文本并判断是否是badword
  如,两个字扫描时,用:
  if(badword_2.find(c)==badword_2.end()) 表示非badword
  else 替换

3.输出文本

你可以试试,看看效率如何。

人生就像茶几 上面放着许多杯具

人生也像厨房 里面总有一些洗具
2010-04-14 13:15
cnfarer
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:179
帖 子:3330
专家分:21157
注 册:2010-1-19
收藏
得分:6 
建议看看:LUCENE(来自开源项目),它可能给你帮助!!!

★★★★★为人民服务★★★★★
2010-04-14 21:00
asdjc
Rank: 6Rank: 6
来 自:武汉
等 级:侠之大者
威 望:7
帖 子:98
专家分:487
注 册:2010-1-22
收藏
得分:6 
我倒是有一个思路:
1.先对badwords={}进行霍夫曼编码(用树形结构显示,首字符编码,次字符编码...);
2.对string[]进行匹配划分为各个字符串(根据语义吧);
3.对string[]逐个字符串提取并与1.中的树形结构进行比对。比对成功改*****,失败比对下一个;
这是我的思路,参考哈。
2010-04-16 07:12
快速回复:求屏蔽词判断算法!!!
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.020744 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved