用递归算法写一个函数,求字符串最长连续字符的长度,比如aaaabbcc的长度为4,aabb的长度为2,ab的长度为1。
(下面递归的代码有问题)
#include <iostream> #include <cstring> using namespace std; int MaxLengthString(char str[]) { int len=strlen(str); if(len==1) return 1; if(str=='\0') return 0; if(*(str+1)=='\0') return 1; if(*str == *(str+1)) return 1+MaxLengthString(str+1); return MaxLengthString(str+1); } int main() { char str[100]; while(cin.getline(str,100)) { int len=MaxLengthString(str); cout<<"Max length of string is:"<<len<<endl; } return 0; }
非递归的实现代码:
#include<stdio.h> #include<assert.h> int get_max_char_count(char *s,char *ret) { assert(s!=NULL); char *temp_char,*final_char,*p; int temp_count,final_count=0; p=s; while(*p!='\0') { temp_count=0; for(temp_char=p,p=p+1,temp_count=1;*p!='\0';p++) { if(*p==*temp_char) temp_count++; else break; } if(temp_count>final_count) { final_char=temp_char; final_count=temp_count; } } *ret=*final_char; return final_count; } int main() { char s[]="aabbbcccc"; int count; char c; count=get_max_char_count(s,&c); printf("%c is appeared %d times\n",c,count); return 0; }