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

勤能補(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>
            国产色爱av资源综合区| 亚洲三级网站| 国产午夜精品一区理论片飘花 | 在线精品视频在线观看高清 | 国产美女搞久久| 欧美午夜一区二区| 国产精品日韩高清| 国产亚洲美州欧州综合国| 极品裸体白嫩激情啪啪国产精品| 国产亚洲欧美日韩一区二区| 国内一区二区三区| 亚洲九九九在线观看| 亚洲激情综合| 亚洲欧美日韩一区在线| 久久精品国产一区二区三区免费看| 久久久人成影片一区二区三区| 欧美国产精品| 亚洲在线一区二区| 免费欧美在线| 国产精品乱码久久久久久| 黄网站色欧美视频| 亚洲视频在线一区| 女女同性精品视频| 一区二区激情小说| 开元免费观看欧美电视剧网站| 欧美日韩在线一区二区三区| 国语自产在线不卡| 亚洲一区二区三区视频| 欧美99久久| 欧美一区91| 欧美性猛交xxxx乱大交蜜桃| 一区二区在线不卡| 亚洲欧美视频一区| 亚洲精品视频二区| 久久视频国产精品免费视频在线| 欧美日韩亚洲三区| 亚洲欧洲另类国产综合| 久久爱www久久做| 99视频日韩| 欧美精品97| 亚洲国产视频直播| 久久久视频精品| 亚洲淫性视频| 欧美日韩精品免费看| 亚洲国产精品精华液网站| 欧美一区91| 亚洲视频二区| 欧美三级韩国三级日本三斤| 欧美.日韩.国产.一区.二区| 亚洲精品国精品久久99热一| 亚洲专区在线| 欧美人成免费网站| 亚洲日本欧美天堂| 男同欧美伦乱| 久久久久久久一区| 国产视频不卡| 久久精品综合一区| 欧美一二区视频| 国产深夜精品| 久久综合久久综合久久| 久久av资源网站| 狠狠色丁香婷婷综合影院| 久久九九免费视频| 久久精品伊人| 在线成人小视频| 女人香蕉久久**毛片精品| 久久精品一区二区国产| 国内一区二区在线视频观看| 久久这里有精品视频| 久久久久久久性| 亚洲免费观看高清完整版在线观看熊 | 欧美在线免费观看| 欧美在线二区| 亚洲电影在线播放| 亚洲国产精品va在线看黑人动漫| 欧美jizz19hd性欧美| 99精品99| 亚洲在线视频观看| 亚洲第一在线综合在线| 亚洲精品视频中文字幕| 国产精品久久久久一区二区三区共| 亚洲在线一区二区三区| 香蕉亚洲视频| 亚洲乱码精品一二三四区日韩在线 | 国产亚洲欧美日韩在线一区| 久久婷婷国产综合精品青草 | 欧美在线黄色| 亚洲国产美国国产综合一区二区| 亚洲国产精品一区二区www| 欧美日韩国产美女| 欧美在线一级va免费观看| 久久国产日韩欧美| 99re6这里只有精品| 亚洲色诱最新| 亚洲二区视频| 亚洲欧美综合精品久久成人 | 日韩视频第一页| 一区二区三区av| 国内精品免费午夜毛片| 亚洲欧洲日本mm| 国产亚洲人成网站在线观看| 亚洲国产毛片完整版| 国产精品一区二区三区久久 | 欧美一区二区三区在线视频| 久久精品一区二区三区不卡| 一本大道久久a久久精品综合| 亚洲欧美综合国产精品一区| 日韩视频欧美视频| 欧美一区二区三区另类| 一区二区三区四区蜜桃| 久久网站免费| 欧美中日韩免费视频| 欧美欧美午夜aⅴ在线观看| 久久一区二区三区四区| 国产精品免费看片| 9久re热视频在线精品| 亚洲国产欧美国产综合一区| 亚洲欧美在线一区二区| 亚洲专区在线| 欧美精品一区二区三区蜜臀 | 欧美大片网址| 韩国av一区二区| 亚洲欧美激情诱惑| 亚洲在线视频网站| 欧美日韩另类综合| 亚洲精品一区二区三区99| 亚洲国产成人久久综合一区| 久久久久久夜| 牛人盗摄一区二区三区视频| 今天的高清视频免费播放成人| 亚洲综合国产| 欧美一区二区三区免费观看视频| 欧美日韩国产一区精品一区| 91久久亚洲| 日韩午夜在线视频| 欧美精品粉嫩高潮一区二区| 亚洲电影免费观看高清完整版在线 | 一区二区三区在线视频免费观看 | 亚洲综合首页| 欧美亚洲视频| 国产精品一区二区久久精品| 亚洲无限av看| 久久精品国产视频| 亚洲第一区色| 欧美精品一区二区三区视频| 亚洲毛片在线| 亚洲欧美日韩一区在线| 国产视频久久久久久久| 久久精品国产99精品国产亚洲性色 | 欧美在线观看一二区| 欧美国产亚洲视频| 欲香欲色天天天综合和网| 久久久久国产一区二区三区| 免费成人你懂的| 亚洲精品网站在线播放gif| 欧美黄色一区二区| 在线中文字幕不卡| 久久久一本精品99久久精品66| 亚洲第一网站免费视频| 欧美精品久久久久久| 在线亚洲激情| 久热精品在线视频| 一本久久综合亚洲鲁鲁| 国产伦精品一区二区三区四区免费| 久久精品麻豆| 亚洲靠逼com| 久久精品天堂| 99ri日韩精品视频| 国产日韩欧美在线| 免费永久网站黄欧美| 亚洲色图自拍| 亚洲电影观看| 欧美在线网站| 99精品视频免费在线观看| 国产精品日韩欧美大师| 久久免费国产精品| 一区二区免费看| 老司机一区二区三区| 中文日韩在线| 亚洲第一在线综合网站| 国产精品美女久久久久久免费| 久久婷婷av| 亚洲欧美在线一区二区| 亚洲毛片在线看| 欧美h视频在线| 欧美一区精品| 在线视频精品一区| 狠狠色综合播放一区二区| 国产精品久久久久9999| 男同欧美伦乱| 久久精品夜色噜噜亚洲a∨| 亚洲一区精彩视频| 日韩视频国产视频| 亚洲国产高清自拍| 久久综合狠狠| 久久综合亚州| 欧美一级精品大片| 亚洲尤物在线| 99国内精品| 99这里只有久久精品视频|