#include <string.h>
#include <ctype.h>
#include <iostream>
using namespace std;
int fun (char * & outPutPtr, char * inPutPtr) {
int i = 0, j = 0, p = 0; // ÁÙʱϱê
int maxLen = 0; // ÐèÒª·µ»ØµÄ×î´óÊý×Ö´®³¤¶È
int inLen = strlen(inPutPtr);
while (i < inLen) {
while (i < inLen && !isdigit(inPutPtr[i])) {
i++; if (!maxLen) j = i;
}
if (i >= inLen) {
if (maxLen) {
outPutPtr = new char[maxLen + 1];
for (int m = 0; m < maxLen; m++) outPutPtr[m] = inPutPtr[j + m];
outPutPtr[maxLen] = '\0';
}
return maxLen; // ×Ö·û´®×ßÍ꣬¼´µ±·µ»Ø
}
for (p = i + 1; p < inLen && isdigit(inPutPtr[p]); p++);
maxLen = ((p - i) > maxLen) ? (p - i) : maxLen;
if (p >= inLen) return maxLen;
if (!isdigit(inPutPtr[j + maxLen - 1])) j = i;
i = p + 1;
}
outPutPtr = new char[maxLen + 1];
for (int m = 0; m < maxLen; m++) outPutPtr[m] = inPutPtr[j + m];
outPutPtr[maxLen] = '\0';
return maxLen;
}
void main () {
char * in = "ads34EFsdsl456789DDasFdiel3456ld345678AAA";
char * out = NULL;
int len = fun(out, in);
if (out) cout << out << endl;
cout << len << endl;
}
int fun(char* outPutStr, char* inPutStr)
{
int maxCnt = 0, currCnt = 0, i;
char *pNumStr;
if(inPutStr == NULL) {
return 0;
}
while(*inPutStr) {
switch(*inPutStr) {
case '0': case '1': case '2': case '3': case '4':
case '5': case '6': case '7': case '8': case '9':
++currCnt;
break;
default:
if(currCnt > maxCnt)
pNumStr = inPutStr - currCnt;
currCnt = 0;
break;
}
++inPutStr;
}
int fun(char* outPutStr, char* inPutStr)
{
int maxCnt = 0, currCnt = 0, i;
char *pNumStr, *p = inPutStr;
if(inPutStr == NULL) {
return 0;
}
while(*inPutStr) {
switch(*inPutStr) {
case '0': case '1': case '2': case '3': case '4':
case '5': case '6': case '7': case '8': case '9':
++currCnt;
break;
default:
if(currCnt > maxCnt)
pNumStr = inPutStr - currCnt;
currCnt = 0;
break;
}
}