算法学习十一----连续最长的数字串
2014-04-13 11:21
113 查看
写一个函数,它的原形是int continumax(char *outputstr,char *intputstr)
功能:
在字符串中找出连续最长的数字串,并把这个串的长度返回,
并把这个最长数字串付给其中一个函数参数outputstr所指内存。
例如:"abcd12345ed125ss123456789"的首地址传给intputstr后,函数将返回9,
outputstr所指的值为123456789
算法思路如下:
1、逐个字符遍历该字符串,当还没有到达字符串的结束时,判断当前字符是否是数字,若是数字,则进行第二步,否则继续遍历
2、继续判断下一字符,直到当前字符不是数字,并记录下数字字符的个数,与之前的数字字符做比较,如果当前数字个数较多,则更新最大值
算法伪代码如下:
C++实现
功能:
在字符串中找出连续最长的数字串,并把这个串的长度返回,
并把这个最长数字串付给其中一个函数参数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; }
相关文章推荐
- 每天学习一算法系列(22)(在字符串中找出连续最长的数字串,并把这个串的长度返回)
- 名企笔试:好未来2017秋招笔试(连续最长的数字串)2017-03-05 算法爱好者
- 微软算法100题25 查找连续最长的数字串
- 数据结构——算法之(024)(在字符串中找出连续最长的数字串,并把这个串的长度返回)
- 算法学习-数字连续的子数组
- 每天学习一点编程(4)(在字符串中找出连续最长的数字串,并把这个串的长度返回)
- 找出一个字符串中最长的连续数字子串,输出该字符串及长度
- 在字符串中找出连续最长的数字串
- 算法基础:整数排序问题(连续整数只保留首尾两个数字)
- 数字图像处理-算法学习
- 算法学习--字符串--最长回文子串
- 连续最长的数字串
- 华为OJ——在字符串中找出连续最长的数字串
- 在字符串中找出连续最长的数字串
- 求二维整数数组中最长的递减数字串(滑雪算法)
- 在字符串中找出连续最长的数字串
- 算法题---找出给定的字母字符串中连续递增的最长子串
- 在字符串中找出连续最长的数字串 .
- 在字符串中找出连续最长的数字串
- 最长公共子串算法的学习笔记