字串最大長度

2021-10-03 06:23:10 字數 1233 閱讀 8717

已知乙個字串陣列words,要求尋找其中兩個沒有重複字元的字串,使得這兩個字串的長度乘積最大,輸出這個最大的乘積。如:

words=[「abcd」,「wxyh」,「defgh」], 其中不包含重複字元的兩個字串是"abcd"和"wxyh",則輸出16

words=[「a」,「aa」,「aaa」,「aaaa」], 找不到滿足要求的兩個字串,則輸出0。

由於測試用例的問題,這道題直接暴力破解是沒有問題的,在考慮到時間複雜性上,我才用了一種新的思路。

暴力破解最大的問題在於需要直接會重複比較字串,如果想要去除冗餘,我們就應該保留比較的資訊。遍歷字串中的每乙個字元,為每乙個字元保留乙個vector記錄所有含有該字元的字元下標,那麼同乙個vector陣列中的字元一定是有重複的,到最後就可以找到所沒有重複的字元讀組。

這種思路是用空間複雜性換取時間複雜性,需要為每乙個字元保留乙個對映,初始假設所有字串之間都是沒有重複的,隨著重複字元的出現消去所有重複的串對。

#include

#include

#include

#include

using

namespace std;

vector v;

vector<

int> l;

map<

char

,vector<

int>

int len;

void

stringsplit

(const string& s,vector

&v,const string c)

if(pos1length()

)}intmain()

int i;

for(i=

0;ivectorint>

>

lens

(len,vector<

int>

(len,1)

);vector<

int>

::iterator it;

for(i=

0;isize()

;i++)}

].push_back

(i);}}

int maxv=

0,mx;

for(i=

0;i(l[i]

*mx>maxv)

maxv=l[i]

*mx;

} cout

}

公共最大字串長度

無題 要求輸出最大公共字串長度和執行次數。將來還要輸出,最大字串。輸入案例 7 6abcbdab bdcaba 4 4abcd abcd 4 5abcd acbcc 輸出答案 寫的很笨,先記著怎麼寫等用到時在仔細研究吧 基本思路就是這個表 有斜槓的表示加一的操作。my answer include ...

最大遞增子字串長度

遞迴策略 記憶陣列 int result int arr 100 記憶陣列,前面計算過的直接在這裡查就行了,不用在遞迴裡重複操作了,時間複雜度o n 2 int memo 100 返回以arr n 結尾的最長子字串長度 intf int n memo n result return result i...

字串長度

當字元全是英文本元的時候,兩者是一樣。這裡主要比較一下,中英文混排的時候,兩個計算結果。測試時編碼方式是utf8 複製 如下 str 中文a字1符 echo strlen str echo echo mb strlen str,utf8 輸出結果 14 6 結果分析 在strlen計算時,對待乙個u...