c:找到出现次数最多的递增数字串

如题,如何在一亿位整数组成的字符串中找到出现次数最多的递增数字串?

答案:

#include <stdio.h>
#include <string.h>
#define MAX_SIZE 100000
int main()
{
  char buf[MAX_SIZE] = {0};
  int i = 0,len = 0,index = 0;
  char maxbuf[12] = {0}; 
  char maxbuf2[12] = {0};
  int maxlen = 0;
  gets(buf); 
  len = strlen(buf); 
  maxbuf2[0] = buf[0];
  i = 1;
  index = 1;
  while(i < len)
  {
    if (buf[i] > buf[i-1])
    {
      maxbuf2[index] = buf[i];
      index++;
    }else
    {
      if (index > maxlen)
      {
        maxlen = index;
        strcpy(maxbuf,maxbuf2);
        maxbuf[index] = '\0';
        maxbuf2[0] = buf[i];
        index = 1;
      }else
      {
        maxbuf2[0] = buf[i];
        index = 1;
      }
    }
    i++;
  }
  if (index > maxlen)
  {
    maxlen = index;
    strcpy(maxbuf,maxbuf2);
    maxbuf[index] = '\0';
  }
  printf("最大串长度:%d,字符串:%s\n",maxlen,maxbuf);
  return 0;
}

Guess you like

Origin blog.csdn.net/mooczhimahu/article/details/120462189