字串「最」系列

2021-06-18 10:13:26 字數 758 閱讀 4569

最近練手,整理了乙個「最」系列的主題,這些題目有點繞,個別的還有別名(詳見博文),混在一塊比較亂,就索性放在一起做了個整理,區別的時候要注意子串行與子串的不同,前者不要求連續,後者要求連續;由於大部分跟dp有關,而且一些題目還可以漸進尋求多種解法,可以用來做不錯的練手。

下面是這些問題的博文目錄

*************************=

=1=最長公共子串行(lcs)==

=2=最長公共子串==

=3=最長重複子串==

=4=最長不重複子串==

=5=最長回文子串==

=6=最長遞增子串行(lis)==

=7=最大子陣列和(連續子陣列最大和)==

*************************=

總結:問題分類

為練手,對大多數問題,盡量逐步探索,整理了多種思路,例如在最長不重複子串問題中,我逐步優化,嘗試了四種實現方法,並成功得到了時間為o(n),輔助空間為常數的方案,回頭反思,發現其優化的思維得益於對最大子陣列和以及lis的整理與思考。

這些問題之間相互有很多相通的地方,例如,在最長不重複子串問題中,其dp思路與最長遞增子串行有點類似,二者同屬「一維」的問題,並且都需要記錄當前元素「之前」的某些資訊;而在dp優化過程中,最長不重複子串問題又與最大子陣列和的優化同出一轍,這兩個「一維」的dp問題都只使用o(1)的空間便可以記錄子問題的最優解,這種「便捷」的方案並不是空穴來風,而是先通過「規規矩矩」的dp一步步探索,才發現這種「trick」的存在,很是有意思。

勘誤:

字串系列 word search

題目 已知 乙個二維字元矩陣,乙個單詞 輸出 該單詞是否可以從二維矩陣中拼接出來?拼接規則 從矩陣的某一行的某個字母開始,持續向臨近的字元擴充套件 向上,向下,向左,向右 直至拼接出該單詞。若可以拼出,則輸出false,若拼不出,則輸出false 例如 a,b,c,d,e e,f,g,h,u a,b...

字串系列 SA

高一還不會sa就退役吧 uoj 35.字尾排序 這是一道模板題。讀入乙個長度為 n nn 的由小寫英文本母組成的字串,請把這個字串的所有非空字尾按字典序從小到大排序,然後按順序輸出字尾的第乙個字元在原串中的位置。位置編號為 1 11 到 nnn。除此之外為了進一步證明你確實有給字尾排序的超能力,請另...

字串dp系列

647.回文子串 給定乙個字串,你的任務是計算這個字串中有多少個回文子串。具有不同開始位置或結束位置的子串,即使是由相同的字元組成,也會被計為是不同的子串。示例 1 輸入 abc 輸出 3 解釋 三個回文子串 a b c 示例 2 輸入 aaa 輸出 6 說明 6個回文子串 a a a aa aa ...