在一个字符串中,找出最长的连续子串并输出吗?C语言
时间: 2024-05-10 21:15:33 浏览: 99
可以使用双指针法来解决这个问题。具体思路是,定义两个指针i和j,分别指向字符串的开头和结尾。然后,移动指针j,如果当前子串不是连续的,就将指针i移动到当前子串的下一个位置,直到找到最长的连续子串为止。
以下是代码实现:
```c
#include <stdio.h>
#include <string.h>
int main() {
char str[100];
printf("请输入一个字符串:");
scanf("%s", str);
int len = strlen(str);
int i = 0, j = 0, max_len = 0, start = 0;
while (j < len) {
if (str[j] != str[j-1] + 1) { // 如果当前子串不是连续的
if (j - i > max_len) { // 更新最长连续子串的长度和起始位置
max_len = j - i;
start = i;
}
i = j; // 移动指针i到当前子串的下一个位置
}
j++; // 移动指针j
}
if (j - i > max_len) { // 处理边界情况
max_len = j - i;
start = i;
}
printf("最长的连续子串是:");
for (i = start; i < start + max_len; i++) {
printf("%c", str[i]);
}
printf("\n");
return 0;
}
```
输入一个字符串后,程序会输出最长的连续子串。例如,输入"abcabcdabcdeabcdefg",程序会输出"abcde"。
阅读全文