假设串采用顺序串存储,设计一个算法求串中出现的第一个最长的连续相同字符构成的平台

#include<bits/stdc++.h>

#define MaxSize 50

typedef struct

{

 char data[MaxSize];

 int length;

}SqString;

//创建串

void StrAssign(SqString &s,char cstr[])

{

 int i;

 for(i=0;cstr[i]!='\0';i++)

 {

  s.data[i]=cstr[i];

 }

 s.length=i;

}

void LongestString(SqString s,int &index,int &maxlen)

{

 int length,i=1,start;

 index=0,maxlen=1;

 while(i<s.length)

 {

  start=i-1;

  length=1;

  while(i<s.length && s.data[i]==s.data[i-1])

  {

   i++;

   length++;

  }

  if(maxlen<length)

  {

   maxlen=length;

   index=start;

  }

  i++;

 }

}

void DispStr(SqString s)

{

 int i;

 if(s.length>0)

 {

  for(i=0;i<s.length;i++)

  {

   printf("%c",s.data[i]);

  }

  printf("\n");

 }

}

int main()

{

    SqString s,ss;

 int index,maxlen;

 char a[]="aaaaaaddddeeeeeeeee";

 StrAssign(s,a);

 DispStr(s);

 LongestString(s,index,maxlen);

    for(int i=index;i<index+maxlen;i++)

    {

     printf("%c",s.data[i]);

    }

 return 0;

}

猜你喜欢

转载自blog.csdn.net/2302_77099705/article/details/130443056