c語言 查詢兩個字串的最大公共子串

2021-08-11 06:50:44 字數 946 閱讀 3022

題目:程式設計實現查詢兩個字串的最大公共子串

示例:」aocdfe」和」pmcdfa」最大公共子串為」cdf」

思路

輸入兩個字串,由短字串的長度決定比較次數。

每次比較乙個字元,從短字串的第乙個依次與長字串的每乙個字元比較,若出現相同的字元,則兩個字串各自取下一位進行比較,直到出現不相同字元的為止。(同時要注意比較是不能超出短字串的長度,不然會出現未知後果)

定義兩個陣列a,b;a用來獲取相同字元,若a的長度大於b的長度,則將a複製給b。

**如下:

#include 

#include

void substr(char *s1, char *s2, int len)

; char b[100] = ;

for(i = 0; i < len; i++)

if(strlen(a) > strlen(b))

m = 0;}}

printf("最大公子串:%s\n", b);

}int main()

; char str2[100] = ;

int len;

printf("請輸入字串1:");

scanf("%s", str1);

printf("請輸入字串2:");

scanf("%s", str2);

len = strlen(str1) <= strlen(str2) ? strlen(str1) : strlen(str2);

if(len == strlen(str1))

else

if(len == strlen(str2))

return

0;}

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

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

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

求兩個串中的第乙個最長子串。如 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 ...