您的位置:首页 > 其它

最大连续递增数字串

2013-11-16 22:14 288 查看
求最大连续递增数字串(如“ads3sl456789DF3456ld345AA”中的“456789”)

int GetSubString(char *strSource, char *strResult)
{
int iTmp=0, iHead=0, iMax=0;
for(int Index=0, iLen=0; strSource[Index]; Index++)
{
if(strSource[Index] >= '0' && strSource[Index] <= '9' &&
strSource[Index-1] > '0' && strSource[Index] == strSource[Index-1]+1)
{
iLen++; // 连续数字的长度增1
}
else
{ // 出现字符或不连续数字
if(iLen > iMax)
{
iMax = iLen; iHead = iTmp;
}
// 该字符是数字,但数字不连续
if(strSource[Index] >= '0' && strSource[Index] <= '9')
{
iTmp = Index;
iLen = 1;
}
}
}
for(iTmp=0 ; iTmp < iMax; iTmp++) // 将原字符串中最长的连续数字串赋值给结果串
strResult[iTmp] = strSource[iHead++];
strResult[iTmp]='\0';
return iMax; // 返回连续数字的最大长度
}
int main(int argc, char* argv[])
{
char strSource[]="ads3sl456789DF3456ld345AA", char strResult[sizeof(strSource)];
printf("Len=%d, strResult=%s \nstrSource=%s\n",
GetSubString(strSource, strResult), strResult, strSource);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  算法