題目:求兩個字串的最大公共子串.例如字串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。然...