長(zhǎng)度為n的字符串有多少子串 求字符串內(nèi)最長(zhǎng)不重復(fù)的子串長(zhǎng)度是多少?
求字符串內(nèi)最長(zhǎng)不重復(fù)的子串長(zhǎng)度是多少?這里有一個(gè)想法:設(shè)計(jì)四個(gè)變量,X1和Y1用于存儲(chǔ)當(dāng)前檢索到的最長(zhǎng)子字符串的起始位置和長(zhǎng)度,X2和Y2用于存儲(chǔ)當(dāng)前檢索到的字符串的起始位置和長(zhǎng)度,然后建立循環(huán)遍歷所
求字符串內(nèi)最長(zhǎng)不重復(fù)的子串長(zhǎng)度是多少?
這里有一個(gè)想法:設(shè)計(jì)四個(gè)變量,X1和Y1用于存儲(chǔ)當(dāng)前檢索到的最長(zhǎng)子字符串的起始位置和長(zhǎng)度,X2和Y2用于存儲(chǔ)當(dāng)前檢索到的字符串的起始位置和長(zhǎng)度,然后建立循環(huán)遍歷所有字符,一次遍歷一個(gè)。如果與當(dāng)前檢索不沖突,則如果與當(dāng)前檢索子串存在字符沖突,則比較當(dāng)前檢索子串的長(zhǎng)度和最長(zhǎng)子串的長(zhǎng)度將繼續(xù)方便。遍歷整個(gè)字符串后,可以找到最長(zhǎng)子字符串的起始位置和長(zhǎng)度。
如何求兩個(gè)任意長(zhǎng)度字符串中的最長(zhǎng)匹配子串?
從如何確定子字符串是否是回文字符串,我們需要知道這樣的對(duì)(中心,半徑)。它意味著可以從每個(gè)中心點(diǎn)向左或向右延伸的最大半徑。由于回文字符串的長(zhǎng)度可能是奇數(shù)或偶數(shù),因此可以使用一種技術(shù)通過(guò)在相鄰字符之間插入特殊字符(如“#”)來(lái)消除此特征。
例如,“12212321”=>“,如果P[i]是以第i個(gè)字符為中心的展開(kāi)半徑,您將發(fā)現(xiàn)對(duì)應(yīng)于它的最長(zhǎng)回文字符串的長(zhǎng)度是P[i]-1。
(請(qǐng)參閱:在O(n)時(shí)間內(nèi)查找字符串的最長(zhǎng)回文子字符串-felix021-在O(n)時(shí)間內(nèi)反轉(zhuǎn)所有回文子字符串-felix021-在O(n)時(shí)間內(nèi)反轉(zhuǎn)所有回文子字符串)
因此,它歸結(jié)為如何查找P數(shù)組。為節(jié)省車輪成本,請(qǐng)參考以上鏈接了解解決流程。
??!