用c语言试设计一个程序:如果字符串的一个子串(长度大 1)的各个字符均相同,则称之为等值子串。输入字符串 S,以‘!’为结束标志,如果串 S 中不存在等值子串,则输出信息:” 无等值子串”,否则求出(输出)一个长度最大的等值子串。
时间: 2024-01-22 10:19:31 浏览: 61
c语言输出字符串中最大对称子串长度的3种解决方案
以下是使用C语言编写的程序,可以实现该功能:
```c
#include <stdio.h>
#include <string.h>
int main() {
char str[100]; // 定义字符串数组
int len, maxLen = 0, start = -1; // 分别表示字符串长度、最大等值子串长度和起始位置
printf("请输入一个字符串(以 ! 结尾):");
scanf("%s", str); // 读入字符串
len = strlen(str); // 计算字符串长度
for (int i = 0; i < len; i++) { // 遍历字符串
int j = i + 1;
while (j < len && str[j] == str[i]) j++; // 查找等值子串
int subLen = j - i; // 计算等值子串长度
if (subLen > maxLen) { // 更新最大等值子串长度和起始位置
maxLen = subLen;
start = i;
}
}
if (start == -1) printf("无等值子串\n"); // 输出结果
else {
printf("最大等值子串为:");
for (int i = 0; i < maxLen; i++) printf("%c", str[start+i]);
printf("\n");
}
return 0;
}
```
该程序首先读入一个字符串,然后遍历字符串,查找等值子串,并计算等值子串的长度。如果找到了等值子串,就比较它的长度和之前找到的最大等值子串的长度,更新最大等值子串的长度和起始位置。最后根据起始位置和最大长度输出最大等值子串,如果没有找到等值子串,则输出“无等值子串”。
阅读全文