求周期字符串的最小子串
生活随笔
收集整理的這篇文章主要介紹了
求周期字符串的最小子串
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
示例:輸入abcabcabc,此時最小的子串是abc,長度為3,輸出3.
直接給出代碼進行講解
思考:因為要求出最小的子串,那么最小就可能是1,然后再逐漸增大測試。由此考慮使用一個變量來記錄字串長度(即代碼中的i從1測試到length-1)。
然后對代碼塊關于j的for循環原理:
用上面數組[a,b,c,a,b,c,a,b,c]來講解:
j%i的目的在于使得始終在子串長度0-i-1進行遍歷
[a(0), b(1), c(2)
a(3,3%3=0),b(4,4%3=1),c(5,5%3=2)
a(6,6%3=0),b(7,7%3=1),c(8,8%3=2)]
當i=1時相當于此時考慮子串是[a]。循環j=1,j%i=0,test[1]!=test[0]成立,則不正確。
i=2同理
i=3時,考慮子串是[a,b,c].循環j=3,j%3=0,test[3]=test[0];j=4,j%3=1,test[4]=test[1]…j=8,test[8]=test[2]此時遍歷完了字符串,所以最小子串是[a,b,c]
總結
以上是生活随笔為你收集整理的求周期字符串的最小子串的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Blum Integer的定义及举例
- 下一篇: DotNetNuke 4/5 安装提示