在字符串中找出连续最常的字符串,并把这个串的长度返回。

来源:互联网 发布:叶利钦 知乎 编辑:程序博客网 时间:2024/05/16 10:15

在字符串中找出连续最常的字符串,并把这个串的长度返回。

并把这个最长数字串赋给一个函数参数outputstr所指向的内存。

例如"abcd12345ed123sf3343461346345" 的首地址赋给inputstr后函数返回9,outputstr所指向的值为“3343461346345”;

[cpp] view plaincopy
  1. #include <iostream>  
  2. using namespace std;  
  3.   
  4. int maxContinueNum(char* &outputstr, char* inputstr){  
  5.   int maxLen = 0;  
  6.   char* cursor = inputstr;  
  7.   while(*cursor){  
  8.     if(*cursor>='0'||*cursor<='9'){  
  9.       char* tmp = cursor;  
  10.       int tmplen = 0;  
  11.       while(*cursor&&*cursor>='0'&&*cursor<='9'){  
  12.         ++tmplen;  
  13.         ++cursor;  
  14.       }  
  15.       if(tmplen>maxLen){  
  16.         outputstr = tmp;  
  17.         maxLen = tmplen;  
  18.       }  
  19.     }  
  20.     if(!*cursor)  
  21.       break;  
  22.     ++cursor;  
  23.   }  
  24.   return maxLen;  
  25. }  
  26.   
  27. int main(){  
  28.   char inputstr[] = "abcd12345ed123sf3343461346345";  
  29.   char *outputstr;  
  30.   int len = maxContinueNum(outputstr, inputstr);  
  31.   for(int i = 0 ; i < len ; ++i)  
  32.     cout<<outputstr[i];  
  33.   cout<<endl;  
  34.   system("PAUSE");  
  35.   return 0;  
  36. }  

此题要注意的是如何返回地址指针,通过指向地址指针的应用来保持地址指针,否则如果只是使用一维地址保持地址指针会丢失,因为是值传递。
0 0
原创粉丝点击