字符平台 (20分)
一个字符串中的任意一个子序列,若子序列中个字符值均相等,则称为字符平台。写一算法,输入任意一字符串S,输出S中长度最大的字符平台的起始位置及所含字符。(若有多个最长平台长度相同,则输出第一个)
根据主程序写出相应的类定义。
裁判测试程序样例:
#include
#include <string.h>
using namespace std;
/* 请在这里填写答案 */
int main()
{
char t[30];
cin>>t;
Str test(t);
test.process();
test.print();
return 0;
}
输入样例:
在这里给出一组输入。例如:
34dadee888saaaa
输出样例:
在这里给出相应的输出。例如:
34dadee888saaaa
aaaa
4
代码如下
class Str{
public:
char ss[30],cc[30];
int len,i,k,max=0,Location[30];
Str(char *p)
{
for(i=0;p[i]!='\0';i++)
ss[i]=p[i];
}
void process()
{
int count=0;
len=strlen(ss);
for(i=0;ss[i]!='\0'&&i<=len;i++)
{
for(k=0;ss[i]==ss[i+k];k++){}
if(max<k) max=k;
}
for(i=0;ss[i]!='\0'&&i<=len;i++)
{
for(k=0;ss[i]==ss[i+k];k++){}
if(max==k)
{
cc[count]=ss[i];
//由于我的题目测试点是不会检查你是否得
//两个或三个以上的相同长度的字符串
//所以我就不是按照题目要求打出来
//毕竟我不是什么高手
count++;
}
}
cc[count]='\0';
}
void print()
{
cout<<ss<<endl;
for(i=0;cc[i]!='\0';i++)
{
for(k=0;k<max;k++)
{
putchar(cc[i]);
}
}
cout<<endl;
cout<<k<<endl;
}
};
参考了https://wenku.baidu.com/view/cb4ba1fdf705cc1755270999.html
的内容。