用c语言写:采用顺序结构存储串,编写一个程序,求串s中出现的第一个最长重复子串。如果没有则输出"没有最长重复子串"; 【输入形式】 输入一个字符串。 【输出形式】 输出最长重复子串。
时间: 2024-05-01 14:19:38 浏览: 60
去掉重复的字符串及在第一个字符串中删除在第二个字符串中出现的字符
您好!我是ChitGPT,按照您的要求,我可以回答您的问题。
针对您的问题,以下是对应的C语言程序实现:
```
#include <stdio.h>
#include <string.h>
#define MAXLEN 1000 // 定义字符串最大长度
int main()
{
char s[MAXLEN]; // 定义字符串s
scanf("%s", s); // 输入字符串s
int len = strlen(s); // 获取字符串s长度
int max = 0; // 定义最大子串长度
int idx = 0; // 定义最大子串起始下标
for (int i = 0; i < len; i++)
{
for (int j = i + 1; j < len; j++)
{
int k = i;
int l = j;
while (s[k] == s[l] && l < len)
{
k++;
l++;
}
if (l - j > max)
{
max = l - j;
idx = j;
}
}
}
if (max == 0)
{
printf("没有最长重复子串\n");
}
else
{
printf("%.*s\n", max, s + idx);
}
return 0;
}
```
该程序利用双重循环枚举所有可能的子串,并判断是否重复,最终输出最长重复子串。
希望能够解决您的问题!如果还有其他问题,欢迎继续提问。
阅读全文