• <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>
            隨筆 - 89  文章 - 118  trackbacks - 0
            <2009年11月>
            25262728293031
            1234567
            891011121314
            15161718192021
            22232425262728
            293012345

            留言簿(16)

            隨筆分類(lèi)(56)

            隨筆檔案(89)

            文章分類(lèi)

            推薦博客

            搜索

            •  

            最新隨筆

            最新評(píng)論

            閱讀排行榜

            介紹的一些字符串處理的問(wèn)題在日常編程中比較常見(jiàn),但是在大學(xué)讀書(shū)的時(shí)候幾乎一個(gè)都沒(méi)有涉及,最近學(xué)習(xí)了一下在這里介紹給大家,僅供參考。

            這些算法與內(nèi)容包括:

            1、    查找一個(gè)短串在一個(gè)長(zhǎng)串中位置;
            2、    查找一個(gè)字符串中最長(zhǎng)的重復(fù)子串;
            3、    查找一個(gè)字符串中重復(fù)最多的子串;
            4、    兩個(gè)字符串最長(zhǎng)的公共子串(連續(xù));
            5、    兩個(gè)字符串最長(zhǎng)的公共子序列(不連續(xù));
            6、    介紹一種強(qiáng)大的數(shù)據(jù)結(jié)構(gòu),Suffix tree.

            這里有一個(gè)PPT:
            http://www.shnenglu.com/Files/humanchao/StringAlg.zip

            -------------------------------------------------

            查找一個(gè)短串在一個(gè)長(zhǎng)串中位置

            這個(gè)問(wèn)題傳統(tǒng)的解法時(shí)間復(fù)雜度為O(m*n),m、n為兩個(gè)串的長(zhǎng)度。有一個(gè)Sunday算法,可以最大限度的優(yōu)化這個(gè)比較過(guò)程,原理如下:

            1、建立一個(gè)hash table,依次把search各個(gè)字符值作為table索引,為table相應(yīng)的位置一個(gè)值(表示字符存在),如果出現(xiàn)重復(fù),后面的位置會(huì)覆蓋前面的位置。
            例:我們要在"WHICH-FINALLY-HALTS.—AT-THAT-POINT"(簡(jiǎn)稱(chēng)string)查找" AT-THAT "(簡(jiǎn)稱(chēng)pat),剛開(kāi)始時(shí),把pat與string對(duì)齊,查看串string中與串pat 相對(duì)應(yīng)的字符(F),在pat的位置,這個(gè)查找的過(guò)程時(shí)間復(fù)雜度通過(guò)hash table的下標(biāo)索引為 O(1): 



            2、如果發(fā)現(xiàn)沒(méi)有,說(shuō)明字符F之前已經(jīng)無(wú)法與pat匹配,直接跳到position(F)+stringlength(pat)


             
            3、發(fā)現(xiàn)”-”在pat位置3,于是重新定位對(duì)齊兩串為:

             
            4、倒序(從最后一個(gè)向前)比較兩串,發(fā)現(xiàn)無(wú)法匹配,繼續(xù)跳轉(zhuǎn)->查找->定位
            因?yàn)樯厦嬉呀?jīng)有一個(gè)T匹配成功,這次要從HALTS的S來(lái)查找,于是定位為:



            5、上圖無(wú)法匹配,從”--AT-“中A后的”-”繼續(xù)查找,重復(fù)上過(guò)程,最終匹配如圖:
             

            這個(gè)算法關(guān)鍵點(diǎn):
            1、建立為pat建立hash表,以提高查找字符的速度;
            2、對(duì)齊跳轉(zhuǎn),快速的后移比較,使比較次數(shù)減少。

            具體的代碼實(shí)現(xiàn)可以參考鏈接:

            http://blog.csdn.net/unicode1985/archive/2007/05/30/1631038.aspx


            posted on 2009-11-25 17:20 胡滿超 閱讀(3138) 評(píng)論(0)  編輯 收藏 引用

            只有注冊(cè)用戶(hù)登錄后才能發(fā)表評(píng)論。
            網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問(wèn)   Chat2DB   管理


            一级做a爰片久久毛片人呢| 久久精品国产亚洲Aⅴ香蕉| 国产成人精品久久| 久久狠狠爱亚洲综合影院| 久久av无码专区亚洲av桃花岛| 久久久一本精品99久久精品88| 久久国产精品99精品国产987| 久久久受www免费人成| 久久精品国产日本波多野结衣| 国内精品久久久久影院优| 久久免费99精品国产自在现线| 97久久婷婷五月综合色d啪蜜芽 | 欧美麻豆久久久久久中文| 久久久久人妻一区二区三区| 久久精品一区二区三区不卡| 久久强奷乱码老熟女网站| av午夜福利一片免费看久久| 综合久久精品色| 精品久久久久久久久中文字幕| 亚洲国产成人精品女人久久久| av无码久久久久久不卡网站| 三级三级久久三级久久| 国产精品免费看久久久香蕉| 久久亚洲美女精品国产精品| 蜜臀久久99精品久久久久久| 久久久久久久尹人综合网亚洲| 国产成人综合久久精品红| 久久国产精品波多野结衣AV| 久久中文骚妇内射| 久久久久亚洲AV成人网人人网站| 激情久久久久久久久久| 久久AV高清无码| 久久综合狠狠综合久久| 久久久久久国产精品无码下载| 成人午夜精品久久久久久久小说| 丁香狠狠色婷婷久久综合| 亚洲精品国产字幕久久不卡| 久久久久久久久久久| 亚洲人成网站999久久久综合| 精品无码久久久久久久动漫 | 久久人人爽人人爽人人AV东京热|