用c语言写:采用顺序结构存储串,编写一个程序,求串s中出现的第一个最长重复子串。如果没有则输出"没有最长重复子串"; 【输入形式】 输入一个字符串。 【输出形式】 输出最长重复子串。
时间: 2024-05-01 22:19:38 浏览: 52
您好!我是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;
}
```
该程序利用双重循环枚举所有可能的子串,并判断是否重复,最终输出最长重复子串。
希望能够解决您的问题!如果还有其他问题,欢迎继续提问。
阅读全文