在字符串中找到全部是由指定的字符組成的最長子串
來源:程序員人生 發布時間:2015-05-11 08:31:21 閱讀次數:3476次
#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;
}
生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈