欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

呼叫號(hào)碼查找方法

文檔序號(hào):7929207閱讀:1088來(lái)源:國(guó)知局
專利名稱:呼叫號(hào)碼查找方法
技術(shù)領(lǐng)域
本發(fā)明涉及通訊領(lǐng)域,特別指一種接收呼叫后,查找與該呼叫最為匹配的呼叫號(hào)碼查找方法。
背景技術(shù)
在電信運(yùn)營(yíng)中,經(jīng)常出現(xiàn)一些需要根據(jù)主叫號(hào)碼或被叫號(hào)碼在國(guó)際區(qū)號(hào)表、國(guó)內(nèi)區(qū)號(hào)表或本地局號(hào)表中匹配出長(zhǎng)度最大的國(guó)際區(qū)號(hào)、國(guó)內(nèi)區(qū)號(hào)或局號(hào)的情形,比如交換局接到用戶呼叫需要根據(jù)被叫號(hào)碼查找最為匹配的電話號(hào)碼,通過(guò)合適的路由交換到被叫號(hào)碼所在的局。因此,呼叫號(hào)碼的最大匹配問(wèn)題成為現(xiàn)今電信運(yùn)營(yíng)中廣為遇見(jiàn)的問(wèn)題。
所謂字符串最大匹配,即為對(duì)一個(gè)字符串,將該字符串跟一個(gè)已經(jīng)存在的字符串集中的所有字符串進(jìn)行匹配,在字符串集中滿足下述要求的一個(gè)字符串稱為待查找字符串的最大匹配(1)假定該字符串長(zhǎng)度為n位,n為大于或等于1的整數(shù),則該字符串與待查找字符串的前n位完全相同。比如待查找的字符串是1234567,在字符串集中有一個(gè)字符串是12345,其前5位與待查找的字符串相同。
(2)該字符串是已經(jīng)存在的字符串集中滿足條件(1)的字符串中長(zhǎng)度最長(zhǎng)的字符串。比如待查找的字符串是1234567,在字符串集中存在滿足條件(1)的字符串只有12、123和123456,由于字符串123456長(zhǎng)度最長(zhǎng),則認(rèn)為123456是1234567的最大匹配。
對(duì)于一個(gè)字符串,在一個(gè)字符串集中查找其最大匹配時(shí),可能查找到其最大匹配,也可能其最大匹配不存在。假設(shè)某市的本地局號(hào)表中有“1”、“12”、“13”、“3”、“34”、“123”、“4”、“43”、“123457”和“1234”共10個(gè)局號(hào)數(shù)據(jù),要在10個(gè)這局號(hào)表中查找被叫號(hào)碼“1234567”對(duì)應(yīng)的最大匹配局號(hào)就應(yīng)該為“1234”,如果要在10個(gè)這局號(hào)表中查找主叫號(hào)碼“5432222”對(duì)應(yīng)的最大匹配局號(hào)則查找失敗,無(wú)對(duì)應(yīng)的最大匹配局號(hào),這就是字符串的最大匹配查找問(wèn)題。
為了后面的描述更方便,先定義兩個(gè)概念全匹配和長(zhǎng)度匹配,全匹配的概念是假定字符串集中有一個(gè)字符串,如果該字符串是待查找字符串從首位開(kāi)始的完全子串,則該字符串是待查找字符串的全匹配,匹配位數(shù)為該字符串的長(zhǎng)度,這與前面最大匹配定義里的(1)是相同的。在字符串集中,長(zhǎng)度最大的全匹配為待查找字符串的最大匹配。
長(zhǎng)度匹配的概念是假定字符串集中有一個(gè)字符串,如果該字符串不是待查找字符串從首位開(kāi)始的完全子串,但該字符串的前若干位跟待查找字符串的前若干位相同,則該字符串為待查找字符串的長(zhǎng)度匹配字符串。假定該字符串長(zhǎng)度為n位,其前i位與待查找字符串的前i位完全相同,其中i<n,則該字符串是待查找字符串的長(zhǎng)度匹配,匹配位數(shù)為i。比如待匹配的字符串是1234567,在字符串集中有一個(gè)字符串是123457,其前5位與待匹配的字符串相同,則123457是1234567的長(zhǎng)度匹配,匹配位數(shù)為5。
目前字符串匹配的常用查找方法是這樣的一、先將字符串集按照字符串的字典順序排序存放在字符串?dāng)?shù)組中,假設(shè)字符串集中字符串的個(gè)數(shù)為N個(gè),待查找的最大匹配的字符串長(zhǎng)度為M,設(shè)置變量m的初值為M;二、取待查找的字符串的前m位長(zhǎng)子字符串,采用二分查找的方法在整個(gè)字符串?dāng)?shù)組中對(duì)該子字符串進(jìn)行完全匹配查找,如果查找到全匹配字符串,則查找成功,結(jié)束最大匹配查找;否則執(zhí)行下一步驟;三、將變量m的值減1,轉(zhuǎn)步驟二,直到變量m的值等于1,這時(shí)查找最大匹配失敗。
以在上述字符串集中查找字符串“1234567”的全匹配為例,這種方法的意思是,先取m最大等于7,用二分查找的方法在字符串集中查找與“1234567”完全相同的字符串,沒(méi)有找到,將m減1,在字符串集中查找與“123456”完全相同的字符串,.......,直到當(dāng)m=4時(shí),找到“1234”為止,“1234”就是所要查找的最大匹配。
這種方法的缺點(diǎn)是需進(jìn)行多次查找,而各次查找過(guò)程中的有關(guān)比較結(jié)果沒(méi)有得到很好的利用,比如當(dāng)m=6時(shí),沒(méi)有利用到m=7時(shí)的比較結(jié)果,當(dāng)然,m=5時(shí)也沒(méi)有利用m=7和m=6時(shí)的比較結(jié)果,每次都需要進(jìn)行單獨(dú)的、與前面結(jié)果沒(méi)有聯(lián)系的二分查找,因此進(jìn)行字符串比較的次數(shù)太多,大大降低了匹配查找的效率。也就是說(shuō),在上述方法的二分查找中,注意力全部集中在查找全匹配上,然后得到最大匹配,但實(shí)際上在比較匹配時(shí),即使沒(méi)有找到全匹配,但比較的過(guò)程中往往被比較的字符串有幾位與待查找的字符串是相同的,而以外的方法沒(méi)有利用這些信息來(lái)調(diào)整后面的查找過(guò)程,造成查找效率極低。
技術(shù)內(nèi)容本發(fā)明的目的是提出一種在后一次的查找過(guò)程中,能夠充分利用前面的比較結(jié)果,大大減少比較次數(shù),提高匹配查找效率的呼叫號(hào)碼查找方法。
為實(shí)現(xiàn)上述目的,本發(fā)明提出的一種呼叫號(hào)碼查找方法,該方法在已按字符串進(jìn)行字典排序的呼叫號(hào)碼字符串集中查找該呼叫號(hào)碼字符串,具體包括以下步驟a、在字符串集中用二分法查找該呼叫號(hào)碼字符串,并在查找過(guò)程中記錄滿足該呼叫號(hào)碼字符串的若干位全匹配和若干位長(zhǎng)度匹配的位置及匹配位數(shù);b、將該呼叫號(hào)碼字符串長(zhǎng)度從最大查找長(zhǎng)度開(kāi)始,然后按本步驟執(zhí)行的次數(shù)逐次遞減1,判斷是否存在匹配位數(shù)等于該結(jié)果+1的全匹配;找出匹配位數(shù)等于該結(jié)果的長(zhǎng)度匹配的位置和匹配位數(shù)小于該結(jié)果的最大值的長(zhǎng)度匹配的位置,并在與該兩個(gè)位置相應(yīng)的區(qū)間中進(jìn)行二分法查找該呼叫號(hào)碼字符串的前面若干位子字符串,其若干位數(shù)等于該結(jié)果,并在所述的二分法查找過(guò)程中記錄或更新滿足該前面若干位子字符串的若干位全匹配和若干位長(zhǎng)度匹配的位置及匹配位數(shù);重復(fù)步驟b、直到該結(jié)果等于1。
其中,為了進(jìn)一步的提高查詢效率,所述的步驟a中,如果該呼叫號(hào)碼字符串的長(zhǎng)度不大于呼叫號(hào)碼字符串集中字符串的最大長(zhǎng)度,則二分查找該呼叫號(hào)碼字符串;否則,二分查找該呼叫號(hào)碼字符串的前面若干位子字符串,其若干位數(shù)為呼叫號(hào)碼字符串集中字符串的最大長(zhǎng)度。所述的步驟b中找出匹配位數(shù)小于該結(jié)果的最大值的長(zhǎng)度匹配的位置更進(jìn)一步包括如果不存在匹配位數(shù)為小于上述結(jié)果的最大值的長(zhǎng)度匹配,則在匹配位數(shù)等于上述結(jié)果的長(zhǎng)度匹配的位置與起始位置相應(yīng)的區(qū)間進(jìn)行二分查找。
所述的步驟b更具體包括以下步驟b1、將該呼叫號(hào)碼字符串長(zhǎng)度從最大查找長(zhǎng)度開(kāi)始,然后按本步驟執(zhí)行的次數(shù)逐次遞減1,如果該結(jié)果等于0,則查找失敗,否則繼續(xù);b2、判斷是否存在匹配位數(shù)等于該結(jié)果+1的全匹配,如果存在,則該位置上的字符串就是所要查找的最大匹配,查找結(jié)束;否則繼續(xù);b3、如果不存在匹配位數(shù)等于該結(jié)果的長(zhǎng)度匹配,則回到步驟b1,否則找出匹配位數(shù)等于該結(jié)果的長(zhǎng)度匹配的位置和匹配位數(shù)小于該結(jié)果的最大值的長(zhǎng)度匹配的位置,并在與該兩個(gè)位置相應(yīng)的區(qū)間中進(jìn)行二分法查找該呼叫號(hào)碼字符串的前面若干位子字符串,其若干位數(shù)等于該結(jié)果,并在所述的二分法查找過(guò)程中記錄或更新滿足該前面若干位子字符串的若干位全匹配和若干位長(zhǎng)度匹配的位置及匹配位數(shù);重復(fù)步驟b1、步驟b2、步驟b3、直到該結(jié)果等于1。
本發(fā)明的效果在于一般的方法在進(jìn)行二次查找的過(guò)程中,在上一個(gè)循環(huán)中的某些信息,一些比較結(jié)果被輕率地丟棄了,比如雖然在上一次循環(huán)中雖然找不到全匹配的字符串,但在比較的過(guò)程中經(jīng)常會(huì)出現(xiàn)待查找的字符串和二分查找時(shí)查到的字符串的前若干位相同的情況,這些信息在現(xiàn)有的方法中統(tǒng)統(tǒng)被丟棄了,本發(fā)明正是充分利用了這種信息,把這些長(zhǎng)度匹配保留,比如在前一次匹配中找到兩個(gè)匹配點(diǎn)I,J,I<=J,如果本次循環(huán)在所有匹配項(xiàng)中沒(méi)有找到一個(gè)全匹配,因?yàn)槠ヅ漤?xiàng)按照字符串順序排列,例如升序,則可以確認(rèn),在J到字符串集的最后一個(gè)字符串之間肯定無(wú)法找到我們所需要的最大匹配項(xiàng),因?yàn)槿绻凶畲笃ヅ漤?xiàng),二分查找時(shí)找到J的位置就要靠后。將匹配的范圍縮小到字符串集的第一個(gè)字符串到J之間,顯然,最有可能的最大匹配項(xiàng)應(yīng)該位于I-J之間,于是將被匹配項(xiàng)長(zhǎng)度減至J,在I的位置和J的位置之間進(jìn)行匹配。如果找不到最大匹配項(xiàng),則在0-I之間進(jìn)行匹配。如此重復(fù),可以不斷逼近我們所需要的匹配項(xiàng)直至找到最大匹配。當(dāng)然,找到的匹配點(diǎn)可能不止I和J,可能還有其他的匹配點(diǎn),但道理是一樣的,都是在匹配點(diǎn)之間的小區(qū)間中進(jìn)行二分查找,而不是象現(xiàn)有技術(shù)那樣每個(gè)循環(huán)都是從頭到尾進(jìn)行二分查找,而由于記錄下了I和J的匹配位數(shù),本發(fā)明就可以直接降至該位數(shù)進(jìn)行該位數(shù)的二分查找。也就是說(shuō),本發(fā)明在后一次的查找過(guò)程中,利用了前一次的比較結(jié)果,大大減少了其比較次數(shù),提高了匹配查找的效率。本發(fā)明方法字符串匹配成功和失敗的字符串平均比較次數(shù)為2*log(N),N表示字符串集中字符串的個(gè)數(shù),跟需查找最大匹配字符串的長(zhǎng)度無(wú)關(guān)。而現(xiàn)有技術(shù)查找成功的字符串平均比較次數(shù)為log(N)*M/2,查找失敗的字符串平均比較次數(shù)為log(N)*M,N表示字符串集的個(gè)數(shù),M表示需查找最大匹配的字符串長(zhǎng)度。因此,本發(fā)明大大減少了匹配成功和匹配失敗的比較次數(shù),提高了匹配查找的效率。


圖1是本發(fā)明呼叫號(hào)碼查找方法的流程圖;圖2是本發(fā)明呼叫號(hào)碼查找方法的步驟b的流程圖。
具體實(shí)現(xiàn)方式圖1是本發(fā)明呼叫號(hào)碼查找方法的流程圖。在圖1中,可以看出本發(fā)明的實(shí)現(xiàn)過(guò)程?,F(xiàn)在舉一個(gè)例子說(shuō)明本發(fā)明的具體實(shí)施。
假定被查找的字符串集中的字符串的數(shù)量為32個(gè),字符串最大長(zhǎng)度為10,這些字符串是234562、234563、23458、23459、2346、11111、2、21、23453、234561、235、24、1111、22、23、231、232、2325、234、2343、23451、23452、25、26、3、1、11、111、2341、2342、31、32。
上述的呼叫號(hào)碼字符串集按字符串的升序排列,其內(nèi)容如下A
=1A[1]=11A[2]=111A[3]=1111A[4]=11111A[5]=2A[6]=21A[7]=22A[8]=23A[9]=231A[10]=232A[11]=2325A[12]=234A[13]=2341A[14]=2342A[15]=2343A[16]=23451A[17]=23452A[18]=23453A[19]=234561A[20]=234562A[21]=234563
A[22]=23458A[23]=23459A[24]=2346A[25]=235A[26]=24A[27]=25A[28]=26A[29]=3A[30]=31A[31]=32其中[]中0-31代表字符串的位置,A[ ]表示該位置上字符串的值。
將需要在其中查找的字符串集中的字符串按升序排列,這意味著在該字符串集中,靠后的項(xiàng)總要大于靠前的項(xiàng)。這樣,本發(fā)明將盡量在靠后的區(qū)域查找匹配項(xiàng)。若在表中找出幾個(gè)全匹配項(xiàng),則可毫無(wú)異議地認(rèn)定最后一個(gè)全匹配項(xiàng)為正確的最大匹配項(xiàng)。
一、在整個(gè)字符串集中進(jìn)行二分查找該呼叫號(hào)碼字符串,并在查找過(guò)程中同時(shí)記錄滿足該呼叫號(hào)碼字符串的若干位全匹配和若干位長(zhǎng)度匹配的位置、匹配位數(shù);二分查找的方法是這樣的對(duì)起始查找的位置和結(jié)束查找的位置取平均值,比較該位置的字符串與最大長(zhǎng)度的該呼叫號(hào)碼字符串的匹配情況,如果是全匹配或長(zhǎng)度匹配,則記錄其位置和匹配位數(shù),其中如果該位置的字符串不小于本次二分查找待查找的字符串,則將該位置-1作為下一次結(jié)束查找的位置,否則將該位置+1作為下一次起始查找的位置;否則,直接進(jìn)行正常的二分查找過(guò)程。
假設(shè)在上述字符串集中查找字符串23456789的最大匹配。用loaction[i]表示匹配位數(shù)為i的長(zhǎng)度匹配的位置,長(zhǎng)度匹配在前面已經(jīng)定義,先初始化loaction[i]=-2,然后賦值location
=-1;用matched[i]表示匹配位數(shù)為i的全匹配的位置,全匹配在前面已經(jīng)定義,先初始化matched[i]=-1。先假設(shè)字符串集中字符串的最大長(zhǎng)度為10,而待查找字符串23456789的長(zhǎng)度為8,因此在字符串集中進(jìn)行二分查找待查找字符串23456789第一次循環(huán)開(kāi)始查找的位置是0,結(jié)束查找的位置是31,取0和31的平均值取整為15,A[15]=2343<23456789,將15+1=16作為下一次開(kāi)始查找的位置;而2343與23456789的前3位相同,2343是23456789匹配位數(shù)為3的長(zhǎng)度匹配,記錄loaction[3]=15。
第二次循環(huán)開(kāi)始查找的位置是16,結(jié)束查找的位置是31,取16和31的平均值取整為23,A[23]=23459>23456789,將23-1=22作為下一次結(jié)束查找的位置;而23459與23456789的前4位相同,23459是23456789匹配位數(shù)為4的長(zhǎng)度匹配,記錄loaction[4]=23。
第三次循環(huán)開(kāi)始查找的位置是16,結(jié)束查找的位置是22,取16和22的平均值取整為19,A[19]=234561<23456789,將19+1=20作為下一次開(kāi)始查找的位置;而234561與23456789的前5位相同,234561是23456789匹配位數(shù)為5的長(zhǎng)度匹配,記錄loaction[5]=19。
第四次循環(huán)開(kāi)始查找的位置是20,結(jié)束查找的位置是22,取20和22的平均值取整為21,A[21]=234563<23456789,將21+1=22作為下一次開(kāi)始查找的位置;而234563與23456789的前5位相同,234563是23456789匹配位數(shù)為5的長(zhǎng)度匹配,刷新loaction[5]=21,loaction[5]=19就被更新了。
第五次循環(huán)開(kāi)始查找的位置是22,結(jié)束查找的位置是22,二者相等,本次二分查找結(jié)束,而且未找到全匹配,繼續(xù)下一步。
二、如圖2所示,將該呼叫號(hào)碼字符串長(zhǎng)度從最大查找長(zhǎng)度開(kāi)始,然后按本步驟執(zhí)行的次數(shù)逐次遞減1,如果該結(jié)果等于0,則查找失敗,否則繼續(xù);如果存在匹配位數(shù)等于該結(jié)果+1的全匹配,則該位置上的字符串就是所要查找的最大匹配,查找結(jié)束;否則繼續(xù);如果不存在匹配位數(shù)等于該結(jié)果的長(zhǎng)度匹配,則回到步驟二,否則找出匹配位數(shù)等于該結(jié)果的長(zhǎng)度匹配的位置和匹配位數(shù)為小于該結(jié)果的最大值的長(zhǎng)度匹配的位置,并在與該兩個(gè)位置相應(yīng)的區(qū)間中進(jìn)行二分查找該呼叫號(hào)碼字符串的前面若干位子字符串,其若干位數(shù)等于該結(jié)果;并在所述的二分查找過(guò)程中記錄或更新滿足該前面若干位子字符串的若干位全匹配和若干位長(zhǎng)度匹配的位置及匹配位數(shù);重復(fù)步驟二、直到該結(jié)果等于1。
其中,匹配位數(shù)等于上述結(jié)果的長(zhǎng)度匹配的位置-1和匹配位數(shù)為小于上述結(jié)果的最大值的長(zhǎng)度匹配的位置+1構(gòu)成的區(qū)間,如果匹配位數(shù)等于上述結(jié)果的長(zhǎng)度匹配的位置-1不大于匹配位數(shù)為小于上述結(jié)果的最大值的長(zhǎng)度匹配的位置+1,則繼續(xù)回到步驟二。
將前面使用的呼叫號(hào)碼字符串從查找長(zhǎng)度8開(kāi)始,匹配位數(shù)等于8的全匹配和長(zhǎng)度匹配均不存在;重新開(kāi)始步驟二,將前面使用的呼叫號(hào)碼字符串長(zhǎng)度8減1為7,匹配位數(shù)等于7的全匹配和長(zhǎng)度匹配均不存在;重新開(kāi)始步驟二,將前面使用的呼叫號(hào)碼字符串長(zhǎng)度7減1為6,匹配位數(shù)等于6的全匹配和長(zhǎng)度匹配均不存在;再重新開(kāi)始步驟二,將前面使用的呼叫號(hào)碼字符串長(zhǎng)度6減1為5,匹配位數(shù)等于5的全匹配不存在,但匹配位數(shù)等于5的長(zhǎng)度匹配存在,而在步驟一的過(guò)程中出現(xiàn)的長(zhǎng)度匹配是loaction
=-1loaction[3]=15loaction[4]=23loaction[5]=21找到匹配位數(shù)等于5的位置是21,匹配位數(shù)為小于5的最大值4的長(zhǎng)度匹配的位置是23,最大匹配位數(shù)為5,匹配位數(shù)等于21不大于23,重新開(kāi)始步驟二;將前面使用的呼叫號(hào)碼字符串長(zhǎng)度5減1為4,匹配位數(shù)等于4的全匹配不存在,但匹配位數(shù)等于4的長(zhǎng)度匹配存在,此時(shí)的長(zhǎng)度匹配是loaction
=-1loaction[3]=15loaction[4]=23找到匹配位數(shù)等于4的位置是23,匹配位數(shù)為小于4的最大值3的長(zhǎng)度匹配的位置是15,最大匹配位數(shù)為4,以匹配位數(shù)4確定的呼叫號(hào)碼字符串“2345”,在16和22之間再進(jìn)行二分查找第一次循環(huán)開(kāi)始查找的位置是16,結(jié)束查找的位置是22,取16和22的平均值取整為19,A[19]=234561>2345,將19-1=18作為下一次結(jié)束查找的位置;而234561與2345的前4位相同,234561是2345匹配位數(shù)為4的長(zhǎng)度匹配,記錄loaction[4]=19;但由于4等于本次查找的最大匹配位數(shù)4,在下一次二分查找時(shí)是到前面的過(guò)程中出現(xiàn)的所有更新后的、并且匹配位數(shù)小于本次二分查找中所用的最大匹配位數(shù)的長(zhǎng)度匹配中,尋找匹配位數(shù)最大的位置和匹配位數(shù)其次大的位置,所以這個(gè)記錄已經(jīng)沒(méi)有什么意義了。
第二次循環(huán)開(kāi)始查找的位置是16,結(jié)束查找的位置是18,取16和18的平均值取整為17,A[17]=23452>2345,將17-1=16作為再下一次結(jié)束查找的位置;而234561與2345的前4位相同,234561是23456789匹配位數(shù)為4的長(zhǎng)度匹配,記錄loaction[4]=17,同樣,這個(gè)記錄已經(jīng)沒(méi)有什么意義了。
第三次循環(huán)開(kāi)始查找的位置是16,結(jié)束查找的位置是16,二者相等,本次二分查找結(jié)束,而且未找到全匹配,繼續(xù)進(jìn)行查找。
此時(shí),前面的過(guò)程中出現(xiàn)的所有更新后的、并且匹配位數(shù)小于上一次二分查找中所用的最大匹配位數(shù)的長(zhǎng)度匹配為loaction
=-1loaction[3]=15找到匹配位數(shù)等于3的位置是15,不存在匹配位數(shù)小于3的長(zhǎng)度匹配,最大匹配位數(shù)為3,以匹配位數(shù)3確定的呼叫號(hào)碼字符串“234”,在0和14之間再進(jìn)行二分查找第一次循環(huán),開(kāi)始查找的位置是0,結(jié)束查找的位置是14,取0和14的平均值取整為7,A[7]=22<234,將7+1=8作為下一次開(kāi)始查找的位置,22與234的前1位相同,22是23456789匹配位數(shù)為1的長(zhǎng)度匹配,記錄loaction[1]=7。
第二次循環(huán),開(kāi)始查找的位置是8,結(jié)束查找的位置是14,取8和14的平均值取整為11,A[11]=2325<234,將11+1=12作為下一次開(kāi)始查找的位置,2325與234的前2位相同,2325是23456789匹配位數(shù)為2的長(zhǎng)度匹配,記錄loaction[2]=11。
第三次循環(huán),開(kāi)始查找的位置是12,結(jié)束查找的位置是14,取12和14的平均值取整為13,A[13]=2341>234,將13-1=12作為下一次結(jié)束查找的位置,2341與23456789的前3位相同,2341是234匹配位數(shù)為3的長(zhǎng)度匹配,刷新loaction[3]=13,但是該值沒(méi)有任何意義。
第四次循環(huán),開(kāi)始查找的位置是12,結(jié)束查找的位置是12,二者相等,本次二分查找結(jié)束。由于A[12]=234是234的全匹配,記錄matched[3]=12,刷新loaction[3]=12,但是該值沒(méi)有任何意義。
本次查找到長(zhǎng)度為3的全匹配,該全匹配就是所查找字符串的最大匹配。
至此,匹配成功,共比較12次。匹配上的字符串為A[12]=234。
權(quán)利要求
1.一種呼叫號(hào)碼查找方法,該方法在已按字符串進(jìn)行字典排序的呼叫號(hào)碼字符串集中進(jìn)行,其特征在于,包括以下步驟a、在字符串集中用二分法查找該呼叫號(hào)碼字符串,并在查找過(guò)程中記錄滿足該呼叫號(hào)碼字符串的若干位全匹配和若干位長(zhǎng)度匹配的位置及匹配位數(shù);b、將該呼叫號(hào)碼字符串長(zhǎng)度從最大查找長(zhǎng)度開(kāi)始,然后按本步驟執(zhí)行的次數(shù)逐次遞減1,判斷是否存在匹配位數(shù)等于該結(jié)果+1的全匹配;找出匹配位數(shù)等于該結(jié)果的長(zhǎng)度匹配的位置和匹配位數(shù)小于該結(jié)果的最大值的長(zhǎng)度匹配的位置,并在與該兩個(gè)位置相應(yīng)的區(qū)間中進(jìn)行二分法查找該呼叫號(hào)碼字符串的前面若干位子字符串,其若干位數(shù)等于該結(jié)果,并在所述的二分法查找過(guò)程中記錄或更新滿足該前面若干位子字符串的若干位全匹配和若干位長(zhǎng)度匹配的位置及匹配位數(shù);重復(fù)步驟b、直到該結(jié)果等于1。
2.根據(jù)權(quán)利要求1所述的呼叫號(hào)碼查找方法,其特征在于所述的按字符串進(jìn)行字典排序是指按字符串進(jìn)行升序排列。
3.根據(jù)權(quán)利要求1所述的呼叫號(hào)碼查找方法,其特征在于所述的步驟a中的二分法查找該呼叫號(hào)碼字符串更具體地是指如果該呼叫號(hào)碼字符串的長(zhǎng)度不大于呼叫號(hào)碼字符串集中字符串的最大長(zhǎng)度,則二分法查找該呼叫號(hào)碼字符串;否則,二分法查找該呼叫號(hào)碼字符串的前面若干位子字符串,其若干位數(shù)為呼叫號(hào)碼字符串集中字符串的最大長(zhǎng)度。
4.根據(jù)權(quán)利要求1所述的呼叫號(hào)碼查找方法,其特征在于所述的步驟a和步驟b中的二分法查找更進(jìn)一步包括如果是全匹配或長(zhǎng)度匹配,則記錄其位置和匹配位數(shù),其中如果該位置的字符串不小于本次二分法查找待查找的字符串,則將該位置-1作為下一次結(jié)束查找的位置,否則將該位置+1作為下一次起始查找的位置。
5.根據(jù)權(quán)利要求1所述的呼叫號(hào)碼查找方法,其特征在于所述的步驟b更具體包括以下步驟b1、將該呼叫號(hào)碼字符串長(zhǎng)度從最大查找長(zhǎng)度開(kāi)始,然后按本步驟執(zhí)行的次數(shù)逐次遞減1,如果該結(jié)果等于0,則查找失敗,否則繼續(xù);b2、判斷是否存在匹配位數(shù)等于該結(jié)果+1的全匹配,如果存在,則該位置上的字符串就是所要查找的最大匹配,查找結(jié)束;否則繼續(xù);b3、如果不存在匹配位數(shù)等于該結(jié)果的長(zhǎng)度匹配,則回到步驟b1,否則找出匹配位數(shù)等于該結(jié)果的長(zhǎng)度匹配的位置和匹配位數(shù)小于該結(jié)果的最大值的長(zhǎng)度匹配的位置,并在與該兩個(gè)位置相應(yīng)的區(qū)間中進(jìn)行二分法查找該呼叫號(hào)碼字符串的前面若干位子字符串,其若干位數(shù)等于該結(jié)果,并在所述的二分法查找過(guò)程中記錄或更新滿足該前面若干位子字符串的若干位全匹配和若干位長(zhǎng)度匹配的位置及匹配位數(shù);重復(fù)步驟b1、步驟b2、步驟b3、直到該結(jié)果等于1。
6.根據(jù)權(quán)利要求1所述的呼叫號(hào)碼查找方法,其特征在于所述的步驟b中該兩個(gè)位置相應(yīng)的區(qū)間是指匹配位數(shù)等于該結(jié)果的長(zhǎng)度匹配的位置-1和匹配位數(shù)為小于該結(jié)果的最大值的長(zhǎng)度匹配的位置+1構(gòu)成的區(qū)間。
7.根據(jù)權(quán)利要求5所述的呼叫號(hào)碼查找方法,其特征在于所述的步驟b3中該兩個(gè)位置相應(yīng)的區(qū)間是指匹配位數(shù)等于該結(jié)果的長(zhǎng)度匹配的位置-1和匹配位數(shù)為小于該結(jié)果的最大值的長(zhǎng)度匹配的位置+1構(gòu)成的區(qū)間。8、根據(jù)權(quán)利要求1所述的呼叫號(hào)碼查找方法,其特征在于所述的步驟b中找出匹配位數(shù)小于該結(jié)果的最大值的長(zhǎng)度匹配的位置更進(jìn)一步包括如果不存在匹配位數(shù)小于該結(jié)果的最大值的長(zhǎng)度匹配,則在匹配位數(shù)等于該結(jié)果的長(zhǎng)度匹配的位置與起始位置相應(yīng)的區(qū)間進(jìn)行二分法查找。
9.根據(jù)權(quán)利要求5所述的呼叫號(hào)碼查找方法,其特征在于所述的步驟b3中找出匹配位數(shù)小于該結(jié)果的最大值的長(zhǎng)度匹配的位置更進(jìn)一步包括如果不存在匹配位數(shù)小于該結(jié)果的最大值的長(zhǎng)度匹配,則在匹配位數(shù)等于該結(jié)果的長(zhǎng)度匹配的位置與起始位置相應(yīng)的區(qū)間進(jìn)行二分法查找。
10.根據(jù)權(quán)利要求1所述的呼叫號(hào)碼查找方法,其特征在于所述的步驟b中找出匹配位數(shù)等于該結(jié)果的長(zhǎng)度匹配的位置和匹配位數(shù)小于該結(jié)果的最大值的長(zhǎng)度匹配的位置更進(jìn)一步包括如果匹配位數(shù)等于該結(jié)果的長(zhǎng)度匹配的位置-1不大于匹配位數(shù)為小于該結(jié)果的最大值的長(zhǎng)度匹配的位置+1,則重新回到步驟b。
11.根據(jù)權(quán)利要求5所述的呼叫號(hào)碼查找方法,其特征在于所述的步驟b中找出匹配位數(shù)等于該結(jié)果的長(zhǎng)度匹配的位置和匹配位數(shù)小于該結(jié)果的最大值的長(zhǎng)度匹配的位置更進(jìn)一步包括如果匹配位數(shù)等于該結(jié)果的長(zhǎng)度匹配的位置-1不大于匹配位數(shù)為小于該結(jié)果的最大值的長(zhǎng)度匹配的位置+1,則重新回到步驟b。
全文摘要
一種呼叫號(hào)碼查找方法,在已按字符串進(jìn)行字典排序的呼叫號(hào)碼字符串集中查找該呼叫號(hào)碼字符串,它包括在整個(gè)字符串集中進(jìn)行二分查找該呼叫號(hào)碼字符串及其子字符串,并在查找過(guò)程中同時(shí)記錄滿足該呼叫號(hào)碼字符串的若干位全匹配和若干位長(zhǎng)度匹配的位置、匹配位數(shù),在后面的二分查找過(guò)程中充分利用前面的二分查找中記錄的全匹配和長(zhǎng)度匹配的位置、匹配位數(shù)信息,從而大大減少了比較匹配的比較次數(shù),提高匹配查找的效率。
文檔編號(hào)H04M1/26GK1482784SQ0214231
公開(kāi)日2004年3月17日 申請(qǐng)日期2002年9月13日 優(yōu)先權(quán)日2002年9月13日
發(fā)明者鄭育紅 申請(qǐng)人:華為技術(shù)有限公司
網(wǎng)友詢問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
和顺县| 正镶白旗| 阿拉尔市| 美姑县| 西乌珠穆沁旗| 朝阳县| 田林县| 汶上县| 南汇区| 精河县| 宜川县| 隆德县| 枝江市| 门源| 青岛市| 开原市| 罗源县| 永平县| 嘉黎县| 琼结县| 交城县| 陕西省| 河东区| 丰顺县| 丽水市| 潢川县| 望都县| 平江县| 策勒县| 西丰县| 霍州市| 泽州县| 同江市| 达拉特旗| 鄂温| 定日县| 黄石市| 鄢陵县| 绥江县| 阜平县| 霞浦县|