数据结构题目求助!
一个只有数字和字母组成的字符串,输出其最大长度的连续数字子串。
例如,字符串为“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();
}