• <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
            <2008年7月>
            293012345
            6789101112
            13141516171819
            20212223242526
            272829303112
            3456789

            留言簿(16)

            隨筆分類(56)

            隨筆檔案(89)

            文章分類

            推薦博客

            搜索

            •  

            最新隨筆

            最新評(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)稱string)查找" AT-THAT "(簡(jiǎn)稱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 胡滿超 閱讀(3131) 評(píng)論(0)  編輯 收藏 引用

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


            91精品国产高清久久久久久国产嫩草| 无码人妻久久一区二区三区 | 日韩人妻无码精品久久久不卡| 精品无码久久久久久久动漫| 精品国产一区二区三区久久| 无码人妻久久久一区二区三区 | 性欧美丰满熟妇XXXX性久久久| 一本久久精品一区二区| 亚洲精品tv久久久久| 亚洲人成电影网站久久| 久久久这里有精品| 久久精品国产亚洲AV久| 国产成人精品综合久久久| A级毛片无码久久精品免费| 浪潮AV色综合久久天堂| 久久电影网一区| 久久99精品国产麻豆婷婷| 久久久久久无码国产精品中文字幕| 久久精品国产亚洲Aⅴ蜜臀色欲| 欧美激情精品久久久久久| 香蕉久久夜色精品国产尤物| 亚洲级αV无码毛片久久精品| 久久久久无码精品国产| 777久久精品一区二区三区无码| 国产精品亚洲美女久久久| 中文字幕久久精品| 久久精品中文字幕久久| 久久天天躁狠狠躁夜夜不卡| 久久久精品人妻一区二区三区蜜桃| 久久久久国产精品熟女影院| 丁香久久婷婷国产午夜视频| 久久强奷乱码老熟女网站| 久久久久久久99精品免费观看| 香蕉99久久国产综合精品宅男自 | 久久天天躁狠狠躁夜夜avapp| 久久婷婷国产综合精品| 久久综合九色综合精品| 久久久久久久波多野结衣高潮| 久久国产乱子精品免费女| 中文字幕热久久久久久久| 97久久精品人人做人人爽|