青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

勤能補(bǔ)拙,Expter

成都游戲Coder,記錄游戲開(kāi)發(fā)過(guò)程的筆記和心得!

一個(gè)關(guān)鍵字過(guò)濾算法

      經(jīng)常某些論壇,或者軟件中對(duì)某些字符串進(jìn)行了關(guān)鍵字過(guò)濾, 一般代替為*號(hào),一般的算法是利用strstr算法,即使是string的find子串算法復(fù)雜度也是(N*log(n)),并非kmp算法,也非bm查找子串算法。
     對(duì)于一組關(guān)鍵字過(guò)濾,特別是對(duì)于一組字符串多,且長(zhǎng)度不規(guī)律的字符串過(guò)濾算法完全是有必要的。
   
    網(wǎng)上對(duì)于關(guān)鍵字過(guò)濾算法較多,且實(shí)現(xiàn)方法較多,本文主要介紹基于一種把關(guān)鍵字轉(zhuǎn)換為Unicode,然后對(duì)關(guān)鍵字的字符或者單個(gè)關(guān)鍵字hash求值。算法復(fù)雜度為O(n).
   對(duì)于漢字的hash值的求法,因?yàn)槭荱nicode編碼是16位,哈希求值:

  /// 求漢字的哈希值
long HashFun(wchar_t  word)
{
 BYTE l 
= LOBYTE(word);
 
int  h = HIBYTE(word);

 
long num = h << 8 ;
 num 
+=l;
 
return num;
}



    基本算法思想;
   1.建立2個(gè)過(guò)濾關(guān)鍵字?jǐn)?shù)組:數(shù)組1:為單個(gè)字符  數(shù)組2:為2個(gè)或者多個(gè)字符
   2.求出數(shù)組1,2的hash值,數(shù)組2的hash值只求出前2個(gè)字符的hash值即可。
   3.掃描待檢測(cè)的文本,然后每次取2個(gè)字符,查找數(shù)組2是否有匹配,如果沒(méi)有則查找數(shù)組1。。。。  查找為O(1)

  主要代碼如下:


/*
   File :  WordFilter.cpp 
   brief:  關(guān)鍵字過(guò)濾程序,復(fù)雜度為O(n),線性
   Author: Expter
   Data  : 2009/06/30

   對(duì)漢字或者字符進(jìn)行哈希算法,先轉(zhuǎn)換為unicode編碼,然后求其hash值。

   主要算法為:
   1.建立2個(gè)過(guò)濾關(guān)鍵字?jǐn)?shù)組:數(shù)組1:為單個(gè)字符  數(shù)組2:為2個(gè)或者多個(gè)字符
   2.求出數(shù)組1,2的hash值,數(shù)組2的hash值只求出前2個(gè)字符的hash值即可。
   3.掃描待檢測(cè)的文本,然后每次取2個(gè)字符,查找數(shù)組2是否有匹配,如果沒(méi)有則查找數(shù)組1。。。。  查找為O(1)


   不足:
   不能很好的分詞。過(guò)濾不是很準(zhǔn)確,每次只能1,2個(gè)詞的過(guò)濾。
*/

#include 
<stdlib.h>
#include 
<iostream>
#include 
<map>
#include 
<vector>
#include 
<string>
#include 
<windows.h>
#include 
<wchar.h>  
#include 
<iosfwd>
using namespace std;

wchar_t des1 [
5][2= { L"",L"",L"測(cè)",L"",L"個(gè)"};
wchar_t des2 [
3][5= { L"用漢", L"的啥" ,L"測(cè)試啊"};
wchar_t src[]  
= { L"這個(gè)原來(lái)是打算的啥子?xùn)|西用漢字只是一個(gè)是不是測(cè)試"};


/// 求漢字的哈希值
long HashFun(wchar_t  word)
{
    BYTE l 
= LOBYTE(word);
    
int  h = HIBYTE(word);

    
long num = h << 8 ;
    num 
+=l;
    
return num;
}


long HashFun(wchar_t * word)
{
    
return HashFun(word[0])*10 + HashFun(word[1]);
}



void  ParamVer(map<long,int> hashmp , wchar_t *src , int i)
{
    
long val = HashFun(src[i+1]);
    
if(hashmp[val] == 1)
    
{
        src[i
+1= L'*';
    }

}

void  VmAlorgthm(map<long,int> hashmp,wchar_t *src)
{
    
long val = 0;
    
int  m = wcslen(src) ;
    
// O(n);
    for(int i = 0 ; i < m-1  ; i ++)
    
{
        
if( HashFun(src[i]) != L'*')
        
{
            val 
= HashFun(src[i]) + HashFun(src[i+1]);
            
if( hashmp[val] == 1)
            
{
                src[i] 
= L'*';
                src[i
+1=L'*';
            }

            
else
            
{
                val 
= HashFun(src[i]);
                
if(hashmp[val] == 1)
                
{
                    src[i] 
= L'*';
                }

                
else
                
{
                    ParamVer(hashmp,src,i);
                }

            }

        }

        
else
        
{
            ParamVer(hashmp,src,i
+1);
        }

    }

    ParamVer(hashmp,src,m
-1);
}



int _tmain(int argc, _TCHAR* argv[])
{
    wcout.imbue(locale(
"chs"));     
    typedef map
<long,int> HASHMAP;

    cout 
<<" 需要過(guò)濾文本: ";
    wcout
<< src <<endl;
    cout 
<<" 過(guò)濾關(guān)鍵字 : " ;
    
for(int i = 0 ;i < 5; i++)
        wcout 
<< des1[i][0<<" ";
    wcout 
<<endl;
    cout 
<<" 過(guò)濾關(guān)鍵詞 : " ;
    
for(int i = 0 ;i < 3; i++)
        wcout 
<< des2[i] <<" ";
    wcout 
<<endl;

    
long  val = 0;

    HASHMAP hash_map;
    
/// 字 hash
    for(int i = 0 ; i < 5 ; i++)
    
{
        val 
= HashFun(des1[i][0]);
        hash_map[val] 
= 1;
    }

    
/// 詞 hash
    for(int i =0 ; i < 3 ; i++)
    
{
        val 
= HashFun(des2[i]);
        hash_map[val] 
= 1;
    }

    
    VmAlorgthm(hash_map,src);
    
    cout 
<<"\n-------------------------------------------------------------\n"
        
<<" 過(guò)濾后的文本: ";
    wcout
<< src <<endl;

    
return 0;
}

posted on 2009-07-12 22:07 expter 閱讀(4156) 評(píng)論(4)  編輯 收藏 引用 所屬分類: 其他學(xué)習(xí)筆記算法與數(shù)據(jù)結(jié)構(gòu)

評(píng)論

# re: 一個(gè)關(guān)鍵字過(guò)濾算法[未登錄](méi) 2009-07-13 11:33 megax

用hash,對(duì)于詞組來(lái)說(shuō)本身就有不確定性  回復(fù)  更多評(píng)論   

# re: 一個(gè)關(guān)鍵字過(guò)濾算法 2009-07-14 00:42 XXOO

我一般是先把詞組排序,然后對(duì)每個(gè)字進(jìn)行二分法這樣。或者也可以HASH
  回復(fù)  更多評(píng)論   

# re: 一個(gè)關(guān)鍵字過(guò)濾算法 2009-07-14 12:37 戴爾電腦

看了有點(diǎn)幫助!!  回復(fù)  更多評(píng)論   

# re: 一個(gè)關(guān)鍵字過(guò)濾算法[未登錄](méi) 2009-07-20 09:10 cc

你這個(gè)hashfun有干活嗎?傳進(jìn)去的值沒(méi)有變化啊  回復(fù)  更多評(píng)論   

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            免费观看亚洲视频大全| 日韩视频精品在线观看| 米奇777在线欧美播放| 欧美一区二区三区免费观看视频| 午夜一区在线| 久久久久综合| 欧美激情中文字幕一区二区| 国产精品ⅴa在线观看h| 国产欧美精品日韩区二区麻豆天美| 国产欧美一区二区三区沐欲| 在线观看国产欧美| 亚洲精品在线电影| 亚洲男女毛片无遮挡| 欧美一区二区精美| 蜜臀久久99精品久久久画质超高清| 欧美电影在线观看| 亚洲私拍自拍| 农夫在线精品视频免费观看| 国产精品久久久久毛片大屁完整版| 很黄很黄激情成人| 亚洲色图在线视频| 久久在线视频| 亚洲性夜色噜噜噜7777| 老鸭窝毛片一区二区三区| 欧美性猛交一区二区三区精品| 激情久久婷婷| 西西裸体人体做爰大胆久久久| 欧美激情第1页| 性色av一区二区三区| 欧美日韩亚洲一区二区三区在线| 一区二区三区自拍| 欧美一区二区在线| 妖精视频成人观看www| 久久精品午夜| 亚洲欧洲另类| 欧美在线地址| 国产精品久久久久9999| 亚洲欧洲免费视频| 久久国产精彩视频| 亚洲视频欧美在线| 欧美日韩一区免费| 亚洲精品综合精品自拍| 蜜臀va亚洲va欧美va天堂| 午夜免费日韩视频| 国产精品久久国产愉拍| 一区二区欧美在线| 欧美激情性爽国产精品17p| 久久福利影视| 国产自产高清不卡| 久久精品中文字幕一区二区三区| 亚洲视频专区在线| 国产精品videossex久久发布| 日韩视频在线永久播放| 亚洲电影免费观看高清完整版在线| 久久er99精品| 狠狠干成人综合网| 久久蜜桃资源一区二区老牛| 欧美一区综合| 国产在线麻豆精品观看| 久久精品国产亚洲a| 欧美一级大片在线观看| 国产亚洲欧美色| 久久久久久69| 久久深夜福利| 亚洲精品一二| 一本色道精品久久一区二区三区| 欧美日韩精选| 亚洲欧美综合v| 性欧美大战久久久久久久免费观看| 国产日韩在线亚洲字幕中文| 久久人人爽人人爽| 老司机成人在线视频| 亚洲精品精选| 一本色道久久综合亚洲精品不卡| 国产精品爱啪在线线免费观看 | 免费欧美在线| 亚洲三级色网| 在线一区二区三区做爰视频网站| 国产乱码精品一区二区三区不卡| 久久人人爽人人爽| 欧美精品一卡二卡| 久久av一区| 欧美国产日本韩| 性欧美video另类hd性玩具| 欧美中文字幕在线观看| 最新热久久免费视频| 中国av一区| 亚洲黄色免费网站| 亚洲午夜精品17c| 在线精品国产成人综合| 一区二区欧美国产| 亚洲第一精品夜夜躁人人爽| 一区二区不卡在线视频 午夜欧美不卡在| 久久久91精品国产一区二区精品| 亚洲东热激情| 一区二区三区免费网站| 韩国成人精品a∨在线观看| 亚洲精品韩国| 国产资源精品在线观看| 9久草视频在线视频精品| 激情欧美一区二区三区| 一区二区三区精品视频在线观看| 激情久久五月| 亚洲免费影院| 亚洲精品欧美日韩专区| 欧美专区在线| 亚洲欧洲av一区二区三区久久| 免费亚洲电影在线| 久久躁日日躁aaaaxxxx| 国产精品一区二区黑丝| 亚洲欧洲日韩在线| 影音先锋亚洲一区| 亚洲欧美日韩综合一区| 亚洲深夜激情| 欧美激情亚洲综合一区| 欧美成人精精品一区二区频| 国产色综合久久| 一本色道精品久久一区二区三区 | 免费在线成人av| 国产精品一区二区在线观看网站| 亚洲精品视频一区二区三区| 亚洲福利精品| 久久精品五月婷婷| 久久精品麻豆| 国产精品区一区二区三区| 日韩写真视频在线观看| 99在线热播精品免费| 欧美成人免费网| 亚洲国产日韩欧美在线99| 亚洲国产电影| 六十路精品视频| 欧美国产激情| 91久久久精品| 欧美福利视频在线| 亚洲黄色成人| 一区二区福利| 国产精品欧美久久久久无广告| 99精品热视频| 亚洲欧美成人网| 国产精品羞羞答答xxdd| 性色av一区二区三区红粉影视| 久久久久久久波多野高潮日日| 一区二区亚洲| 欧美大片91| 亚洲最新合集| 久久九九99| 亚洲成色777777在线观看影院 | 国产九区一区在线| 先锋影音一区二区三区| 免费不卡在线视频| 日韩天天综合| 国产精品成人播放| 欧美一级艳片视频免费观看| 久久久无码精品亚洲日韩按摩| 亚洲高清在线播放| 欧美日韩高清区| 性感少妇一区| 欧美二区在线播放| 国产精品久久网| 欧美在线啊v| 亚洲国内高清视频| 香蕉亚洲视频| 91久久精品美女高潮| 国产精品久久福利| 久久久久国产成人精品亚洲午夜| 亚洲欧洲一区| 久久精品国产亚洲高清剧情介绍| 亚洲电影免费观看高清完整版在线观看| 欧美日本韩国一区| 亚洲欧美三级在线| 亚洲第一视频| 欧美一区免费| 日韩视频亚洲视频| 国产日产亚洲精品| 欧美激情二区三区| 欧美一级视频精品观看| 亚洲精品久久久蜜桃| 久久国产精品毛片| 一本久久综合亚洲鲁鲁| 狠久久av成人天堂| 国产精品国产三级国产aⅴ无密码| 久久视频国产精品免费视频在线 | 欧美高清一区二区| 欧美一区二区性| 亚洲美女精品一区| 狠狠久久亚洲欧美专区| 国产精品扒开腿做爽爽爽软件| 久久亚洲综合网| 亚洲女优在线| 一本色道88久久加勒比精品 | 欧美国产精品人人做人人爱| 亚洲资源av| 一本久久综合| 亚洲人成在线播放网站岛国| 久久一二三国产| 久久久久久自在自线| 欧美一级淫片aaaaaaa视频| 亚洲一区自拍| 亚洲欧美日韩精品久久| 亚洲一区日韩在线|