您的位置:首页 > 其它

算法学习十一----连续最长的数字串

2014-04-13 11:21 113 查看
写一个函数,它的原形是int continumax(char *outputstr,char *intputstr)

功能:

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

并把这个最长数字串付给其中一个函数参数outputstr所指内存。

例如:"abcd12345ed125ss123456789"的首地址传给intputstr后,函数将返回9,

outputstr所指的值为123456789

算法思路如下:

1、逐个字符遍历该字符串,当还没有到达字符串的结束时,判断当前字符是否是数字,若是数字,则进行第二步,否则继续遍历

2、继续判断下一字符,直到当前字符不是数字,并记录下数字字符的个数,与之前的数字字符做比较,如果当前数字个数较多,则更新最大值

算法伪代码如下:

while not to the end
reset tempSum
if '0'<= *c <= '9'
then while not to the end and '0' <= *c <= '9'
add tempSum

go to next char
if tempSum > maxCount
then update maxCount
go to next char


C++实现

int ContinuMaxNumStr(const char *c)
{
int maxCount = 0;
int tempSum = 0;

//while not to the end
while(*c != '\0')
{
//reset tempSum
tempSum = 0;
//if '0'<= *c <= '9'
if(*c>='0' && *c<='9')
{
//then while not to the end and '0' <= *c <= '9'
while((*c != '\0') && (*c>='0' && *c<='9'))
{
//add tempSum
++tempSum;

//go to next char
++c;
}
//if tempSum > maxCount
if(tempSum > maxCount)
{
//then update maxCount
maxCount = tempSum;
}
}
//go to next char
++c;
}

return maxCount;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: