国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

倍增法之后綴數(shù)組解決重復子串的問題

2016-11-17 02:37:52周波柳杰
中國新通信 2016年17期
關鍵詞:字符串名次關鍵字

周波 柳杰

【摘要】后綴數(shù)組是處理字符串的有力工具。利用后綴數(shù)組解決字符串問題,無論是在時間復雜度和空間復雜度上,都非常有優(yōu)勢,在信息學競賽中也是非常實用的一個工具。本文分兩部分,第一部分介紹倍增法構(gòu)造后綴數(shù)組,第二部分介紹簡潔高效代碼的實現(xiàn)與應用。

【關鍵字】字符串 后綴 后綴數(shù)組 名次數(shù)組 快速排序

后綴數(shù)組的實現(xiàn),本節(jié)主要介紹后綴數(shù)組的倍增法實現(xiàn)。

一、基本定義

簡單的說,后綴數(shù)組是“排第幾的后綴串首字母在哪里?”,名次數(shù)組是“后綴串排第幾?”。容易看出,后綴數(shù)組和名次數(shù)組為互逆運算。如圖1所示。

設字符串的長度為n。為了方便比較大小,可以在字符串后面添加一個字符,這個字符沒有在前面的字符中出現(xiàn)過,而且比前面的字符都要小。在求出名次數(shù)組后,可以僅用0(1)的時間比較任意兩個后綴的大小。在求出后綴數(shù)組或名次數(shù)組中的其中一個以后,便可以用0㈤的時間求出另外一個。任意兩個后綴如果直接比較大小,最多需要比較字符n次,也就是說最遲在比較第n個字符時一定能分出“勝負”。

二、倍增算法

倍增算法的主要思路是:用倍增的方法對每個字符開始的長度為2k的子字符串進行排序,求出排名,即rank值。k從0開始,每次加1,當2k大于n以后,每個字符開始的長度為2k的子字符串便相當于所有的后綴。并且這些子字符串都一定已經(jīng)比較出大小,即rank值中沒有相同的值,那么此時的rank值就是最后的結(jié)果。每一次排序都利用上次長度的字符串的rank值,那么長度為2k的字符串就可以用兩個長度為2k-1的字符串的排名作為關鍵字表示,然后進行排序,便得出了長度為2k的字符串的rank值。以字符串“aabaaaab”為例,整個過程如圖2所示。其中x、y是表示長度為2k的字符串的兩個關鍵字。

猜你喜歡
字符串名次關鍵字
小小宋慈大智慧·名次競爭
履職盡責求實效 真抓實干勇作為——十個關鍵字,盤點江蘇統(tǒng)戰(zhàn)的2021
華人時刊(2022年1期)2022-04-26 13:39:28
成功避開“關鍵字”
把所有名次都考上
莫愁(2018年33期)2018-11-14 02:11:48
劃船比賽
幼兒100(2018年7期)2018-03-08 18:42:16
考試名次
一種新的基于對稱性的字符串相似性處理算法
依據(jù)字符串匹配的中文分詞模型研究
基于用戶反饋的關系數(shù)據(jù)庫關鍵字查詢系統(tǒng)
一種針對Java中字符串的內(nèi)存管理方案
库尔勒市| 永嘉县| 龙陵县| 莱阳市| 子长县| 兰考县| 霞浦县| 和龙市| 惠来县| 鲁山县| 府谷县| 泗阳县| 瑞丽市| 福安市| 蕉岭县| 黄陵县| 栾城县| 巴彦淖尔市| 定安县| 铜鼓县| 恩施市| 偃师市| 泰顺县| 霍林郭勒市| 新泰市| 民和| 青河县| 交城县| 台湾省| 望谟县| 启东市| 平塘县| 嘉荫县| 蒲城县| 赣榆县| 大关县| 大同市| 济宁市| 大埔县| 临清市| 汉川市|