在字符串中找出连续最常的字符串,并把这个串的长度返回。
并把这个最长数字串赋给一个函数参数outputstr所指向的内存。
例如"abcd12345ed123sf3343461346345" 的首地址赋给inputstr后函数返回9,outputstr所指向的值为“3343461346345”;
#include <iostream>
using namespace std;
int maxContinueNum(char* &outputstr, char* inputstr){
int maxLen = 0;
char* cursor = inputstr;
while(*cursor){
if(*cursor>='0'||*cursor<='9'){
char* tmp = cursor;
int tmplen = 0;
while(*cursor&&*cursor>='0'&&*cursor<='9'){
++tmplen;
++cursor;
}
if(tmplen>maxLen){
outputstr = tmp;
maxLen = tmplen;
}
}
if(!*cursor)
break;
++cursor;
}
return maxLen;
}
int main(){
char inputstr[] = "abcd12345ed123sf3343461346345";
char *outputstr;
int len = maxContinueNum(outputstr, inputstr);
for(int i = 0 ; i < len ; ++i)
cout<<outputstr[i];
cout<<endl;
system("PAUSE");
return 0;
}
此题要注意的是如何返回地址指针,通过指向地址指针的应用来保持地址指针,否则如果只是使用一维地址保持地址指针会丢失,因为是值传递。