百度面试题——最大连续数字串问题
2012-09-10 11:21
281 查看
问题描述:
写一个函数,它的原形是int continumax(char *outputstr,char *intputstr)
功能:
在字符串中找出连续最长的数字串,并把这个串的长度返回,
并把这个最长数字串付给其中一个函数参数outputstr 所指内存。
例如:"abcd12345ed125ss123456789"的首地址传给intputstr 后,函数将返回9,
outputstr 所指的值为123456789
解题思路:
该问题相对简单,找出连续的数字串不是什么难事,关键在于怎样找出最大的数字串,这里,我们可以定义一些辅助变量:
max_len:保存当前所得的最大连续数字串个数。
pb:保存当前最大数字串的起始位置(指向inputstr的指针)。
pe:保存当前最大数字串的结束位置(指向inputstr的指针)。
我们在查找到某一段数字串的时候,就将该段数字串的长度和max_len进行比较,如果更大则分别对max_len,pbegin, pend分别赋值。
源码如下:
写一个函数,它的原形是int continumax(char *outputstr,char *intputstr)
功能:
在字符串中找出连续最长的数字串,并把这个串的长度返回,
并把这个最长数字串付给其中一个函数参数outputstr 所指内存。
例如:"abcd12345ed125ss123456789"的首地址传给intputstr 后,函数将返回9,
outputstr 所指的值为123456789
解题思路:
该问题相对简单,找出连续的数字串不是什么难事,关键在于怎样找出最大的数字串,这里,我们可以定义一些辅助变量:
max_len:保存当前所得的最大连续数字串个数。
pb:保存当前最大数字串的起始位置(指向inputstr的指针)。
pe:保存当前最大数字串的结束位置(指向inputstr的指针)。
我们在查找到某一段数字串的时候,就将该段数字串的长度和max_len进行比较,如果更大则分别对max_len,pbegin, pend分别赋值。
源码如下:
bool is_number(char ch) { return ch >= '0' && ch <= '9'; } int max_continue_num(char *outputstr,char *inputstr) { int max_len; char *pb, *pe, *pbegin, *pend, *p; p = inputstr; pb = pe = pbegin = pend = NULL; max_len = 0; while(*p) { if(is_number(*p)) { if(NULL == pbegin) { pbegin = pend = p; } pend++; } else if(NULL != pbegin){ int len = (int)(pend - pbegin); if(len > max_len) { max_len = len; pb = pbegin; pe = pend; } pbegin = pend = NULL; } p++; } if(pbegin) { int len = (int)(pend - pbegin); if(len > max_len) { max_len = len; pb = pbegin; pe = pend; } } if(max_len) { while(pb != pe) { *outputstr++ = *pb++; } } return max_len; } int main(void) { char inputstr[] = "abcd12345ed125ss123456789"; char outputstr[100] = {""}; cout<<max_continue_num(outputstr, inputstr)<<endl; cout<<outputstr<<endl; getchar(); return 0; }
相关文章推荐
- 【剑指offer】面试题31-连续子数组的最大和问题
- 一道C语言面试题——求最大连续数字子串
- 微软:求最大连续递增数字串/时钟问题
- 【每日面试题】最大连续递增数字串
- 连续最大和,数字类区间问题
- 面试题---求一个串中的最大连续递增数字串
- 剑指offer之面试题31连续子数组的最大和
- 百度程序题目----连续数问题--- 另解
- 关于数组的问题(连续子数组的最大和、数组中出现次数超过一半的数字、调整数组顺序使奇数位于偶数之前)
- 面试题31——连续子数组的最大和
- 自动换行问题,而连续的数字和英文字符常常将容器撑大,下面介绍的是CSS如何实现换行的方法
- 求最大连续递增数字串
- 剑指offer——面试题31:连续子数组的最大和
- 百度面试题之桶中取球(咖啡罐问题的变形)
- 常数时间内求栈内最大值(iteye上一篇关于百度面试题文章的读后感)
- 面试题41:和为s的两个数字VS和为s的连续正数序列
- 面试题31:连续数组的最大和
- 《剑指Offer》学习笔记--面试题31:连续子数组的最大和