求兩個字串的最大公共子串

2021-09-12 10:28:00 字數 637 閱讀 5205

題目:求兩個字串的最大公共子串.例如字串a="abcdefg",字串b="cdeab";

分析:從兩個字串的那個較短的字串出發,求其全部子串,判斷每乙個子串是不是那個長串的子串,求子串過程本著由長到段的原則,這樣可以保證第一次匹配到的子串就是最大的公共子串。

char* get_common_string(char* str1, char* str2)

//如果短串是長傳的子串,那麼最大公共串就是短串

if (strstr(long_str, short_str) != null)

len2 = strlen(short_str);//現在len2代表短串的長度

//sub_str是用來儲存短串的各個子串的臨時空間的

char* sub_str = (char*)malloc(sizeof(char)*len2);

//i是短串的所有可能長度,由於上面已經判斷過短串自身了

//因此這裡最長比短串小1開始

for (int i = len2 - 1; i > 0; i--)

}} free(sub_str);

sub_str = null;

return null;//來到這說明沒找到

}

求兩個字串的最大公共子串

求兩個串中的第乙個最長子串。如 abractyeyt dgdsaeactyey 的最大子串為 actyet 有乙個演算法很巧妙 把字串1 長度m 橫排,串2 長度n 豎排,得到乙個m n的矩陣c,矩陣的每個元素的值如下,如果m i n j 則c j i 1,否則,c j i 0。然後找出矩陣中連續是...

求兩個字串的最大公共子串

求兩個字串的最大公共子串 演算法原理 lcs i,j 0 i 0 j 0 lcs i 1,j 1 i 0 b 0 str1 i str2 j 1 構造乙個str1.size str2.size 的矩陣vec 2 如果 str1 i str2 j 則vec i j vec i 1 j 1 1 lcs ...

求兩個字串的最大公共字串

今天在csdn上面翻倒乙個問題 求兩個字串的最大公共子串,本來想用有限自動機來做,可惜當年編譯學的不著.b上網翻了翻相關介紹,有乙個演算法很巧妙 把字串1 長度m 橫排,串2 長度n 豎排,得到乙個m n的矩陣c,矩陣的每個元素的值如下,如果m i n j 則c j i 1,否則,c j i 0。然...