目前只会暴力求解
思路:
两层大循环。字符串1向后遍历,每次拿一个字符出来。字符串2从前往后找看哪个字符能和字符串1拿出来的字符匹配。匹配上第一个字符了就写一个小循环往后看一共能匹配多少个字符,记录下第一个匹配上字符的位置和长度,如果打破了最大字符串长度的记录就替换记录。
#include <stdio.h>
#include <string.h>
void sub(char* s1, char* s2);
int main()
{
char s1[100], s2[100];
scanf("%s", s1);
scanf("%s", s2);
sub(s1, s2);
return 0;
}
void sub(char* s1, char* s2)
{
int maxPos = 0,maxLen=0,pos=0,len=0;
for (int i = 0; i < strlen(s1); i++)
{
for (int j = 0; j < strlen(s2); j++)
{
len = 0;
pos = 0;
if (*(s1 + i) == *(s2 + j))
{
pos = i;
len=1;
}
while (*(s1 + i + len) == *(s2 + j + len) && *(s1 + i + len) != '\0'&&*(s2 + j + len) != '\0')
{
len++;
}
if (len > maxLen)
{
maxLen = len;
maxPos = pos;
}
}
}
while (maxLen > 0)
{
printf("%c", *(s1 + maxPos));
s1++;
maxLen--;
}
}
版权声明:本文为alike_meng原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。