【问题描述】如果字符串的一个子串(其长度大于1)的各个字符均相同,则称之为等值子串。试设计一算法,求出串S中一个长度最大的等值子串;如果串S 中不存在等值子串,则输出信息no
【输入形式】输入一个字符串,并以!结束
【输出形式】输出第一个出现的最长字符串,如果没有输出no
【样例输入】aabc123abc123cc!
【样例输出】aa
【样例输入】abceebccadddddaaadd!
【样例输出】ddddd
#include <iostream>
using namespace std;
struct ma
{
int flag = 0;
char b[100];
int len = 0;
} a;
int main()
{
int size, c = 0;
char str[1000];
int i = 0;
while (1)
{
cin >> str[i];
size = i;
if (str[i] == '!')
break;
i++;
}
int start;
for (i = 0; i < size; i++)
{
c = 1;
if (str[i] == str[i + 1])
{
start = i;
while (str[i] == str[i + 1])
{
c++;
i++;
}
if (c > a.len)
{
for (int j = 0; j < c; j++, start++)
a.b[j] = str[start];
a.flag++;
a.len = c;
}
}
}
if (a.flag > 0 && a.len > 1)
for (i = 0; i < a.len; i++)
cout << a.b[i];
else
cout << "no";
}