读书人

数据结构题目

发布时间: 2012-05-12 15:39:31 作者: rapoo

数据结构题目求助!

一个只有数字和字母组成的字符串,输出其最大长度的连续数字子串。
例如,字符串为“xy357abfff4777db421”,则输出的结果为“777”。

请高手给出C语言的程序,谢谢了。

[解决办法]

C/C++ code
#include <stdio.h>#include <stdlib.h>#include <string.h>void searchMaxLenString(char *string){    char *pResult;    int  len,maxLen;    int  begin,end;    char buff[256];        maxLen=0;    begin=0;    for (end=0;end<strlen(string);end++)    {        if ( string[end] == string[begin] )        {            len=end-begin+1;            if (len>maxLen)            {                maxLen=len;                pResult=string+begin;            }        }        else        {            begin=end;        }    }        memcpy(buff,pResult,maxLen);    buff[maxLen]=0;    printf("The string is %s\n",string);    printf("The max subString is %s\n",buff);}int main(){    char *string1="xy357abfff47777db421";    char *string2="xy357abffff4777db421";    char *string3="aabbccddeeff1234999";    searchMaxLenString(string1);    searchMaxLenString(string2);    searchMaxLenString(string3);}
[解决办法]
哪里有涉及到数据结构啊 遍历一遍 就够了
[解决办法]
1楼都给出代码了。基本没有涉及到数据结构嘛。只需要遍历一遍字符数组,当当前游标指向的字符也前一个不同的话就重新计数,并且保留最大的数字就可以了
[解决办法]
[code=C/C++][/code]# include <stdio.h>
# include <string.h>
void fun(char *a)
{
char *p=a,*q,max[20],max1[20];
int i=0;
do
{
max[i++]=*p; //给max复值
p++;
}while(*p==*(p-1));
max[i]=='\0';
while(*p)
{
i=0;
do
{
max1[i++]=*p;p++;
}while(*p==*(p-1));
max1[i]='\0';
if(strlen(max1)>strlen(max)) //用最大max的和现 max1的比
strcpy(max,max1);
}
puts(max);
}
void main()
{
char *a="xx3357abff4777db421";
fun(a);
getch();
}

读书人网 >C语言

热点推荐