求最長連續字串問題

2021-07-16 05:25:33 字數 1107 閱讀 9739

注意這裡講的是連續,也就是substring,不是subsquence

我們有兩個方法,動態規劃和直尺法。

dp:建乙個c[i][j]陣列,表示在第i比較中,最長的連續長度

#include 

#include

#include

#include

#define n 500010

using

namespace

std;

int longest_substring(char *s1,char *s2)

for(j=0;j1;j++)

c[0][j]=0;

max=-1;

for(i=1;i1;i++)

else

c[i][j]=0;

if(c[i][j]>max)}}

char s[1000];

k=max;

i=x-1,j=y-1;

s[k--]='\0';

while(i>=0&&j>=0)

else

break;

}puts(s);

for(i=0;i1;i++)

delete c[i];

delete c;

return max;

}int main()

直尺法:

#include 

#include

#include

#include

#define n 10010

/*直尺法:將短的一串從尾部開始進入和長的串頭部比較,直到短的頭部與長的尾部比較完畢

*/using

namespace

std;

int longest_substring(char *s1,char *s2)

}if(count>max)

}char s[1001];

for(i=0; i1+i];

s[i]='\0';

puts(s);

return max;

}int main()

求最長連續公共子串行和最長連續子字串

問題的關鍵是如何定義子問題。假設有 xm x1 x2 x3 xm yn y1 y2 y3 yn 1.最長公共子串行 不必連續 定義f m,n 為xm和yn之間最長的子串行的長度 於是有f m,0 f 0,m 0 如果xm yn,則f m,n max 如果xm yn,則f m,n f m 1,n 1 ...

字串最長連續子串

題目 求給定字串中連續出現次數最多的子串。例 abcbcbcabc,bc出現次數最多,為3次 分析 1 將字尾陣列依次存入字串陣列中 2 依次將第i個字串的長度為j i的子串與第j個字串相比,若相等,則比較j字串剩下有幾個子串與之相等 3 記錄每個子串出現的次數,並比較,保留最大的 pairfun ...

求最長字串與最短字串

description 有n個字串,找到最長的字串並輸出。input 測試資料有多組,第一行的正整數t表示測試資料的組數。每組的第一行給乙個正整數n n 10 表示該組測試資料中字串的個數,後跟n行,每行乙個字串 不超過100個字元,中間有可能包含空格 output 對於每組測試資料,輸出最長的字串...