尋找一個字符串中的最長重複子串(後綴數組)&找出一個字符串中最長不重複子串

一、尋找一個字符串中的最長重複子串(後綴數組)

後綴數組其實可以看尋找一個字符串中的最長重複子串(後綴數組)作一個由字符串s倒數i個字符組成的子串的集合,其中0<i<s.length(),例如 字符串strstr的後綴數組爲: 
{r,tr,str,rstr,trstr,strstr} 
得到這個集合之後,我們可以發現,最長重複子串其實變成了求該集合中任意兩個元素的最長公共前綴的問題。因爲在這個集合中,原字符串中的每個字符都會出現在集合中元素的首位,而如果有子串重複出現,那麼該子串肯定會出現在某兩個或者多個元素的公共前綴上。 
接下來問題就變成了如何去尋找最長公共前綴,除了暴力搜素之外,我們可以考慮先對該集合中的元素按照字典序進行排序,然後依次比較相鄰的元素,找出其中的最長公共前綴即可。

https://blog.csdn.net/kongdavid/article/details/38405475

https://blog.csdn.net/htq__/article/details/50855769

 

二、找出一個字符串中最長不重複子串(python)

https://blog.csdn.net/together_cz/article/details/77533121

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章