在字符串中找到全部是由指定的字符组成的最长子串
来源:程序员人生 发布时间:2015-05-11 08:31:21 阅读次数:3307次
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#ifndef strndup
char* strndup(const char* src,int nMax) {
int srcLen=strlen(src);
int n=(srcLen<nMax)?srcLen:nMax;
char* dest=(char*)calloc(n+1,sizeof(char));
while(--n>=0)
dest[n]=src[n];
return dest;
}
#endif
char* search_max_substr(char src[],char ch,int* rcLen) {
char* pStart;
if(!src||!(pStart=strchr(src,ch))) {
return NULL;
}
*rcLen=1;
char* pEnd=strrchr(src,ch);
if(pEnd==pStart) {
return pStart;
}
char* rcOut=pStart;
char* pCur=pStart+1;
while(pCur-1<=pEnd) {
if( *(pCur-1)==*pCur) {
pCur++;
continue;
}
if(pCur-pStart>*rcLen) {
rcOut=pStart;
*rcLen=pCur-pStart;
}
if(!pCur||!(pStart=strchr(pCur,ch))) {
break;
}
pCur=pStart+1;
}
return rcOut;
}
int main ( int argc, char* argv[] ) {
char s[]="AAAABBBCCDDEFFFFFFFFFF";
int n=0;
char* p=search_max_substr(s,'D',&n);
if(p) {
char* sbk=strndup(p,n);
if(sbk) {
printf("RESULT:%s
",sbk);
free(sbk);
}
}
return 0;
}
生活不易,码农辛苦
如果您觉得本网站对您的学习有所帮助,可以手机扫描二维码进行捐赠