int maxContinuNum(const char*inputstr.char*outputstr)
功能:
在以‘\0’结尾的字符串中找出连续最长的数字串,并把这个串的长度返回,并把这个最长数字串付给其中一个函数参
数outputstr所指内存。不能用strlen之类的库函数。
#include<iostream> #include<assert.h> using namespace std; bool isdigital(char p){ if(p>='0'&&p<='9') return true; return false; } int maxContinuNum(const char* inputstr,char* outputstr){ int len=0;//每次的连续数 int maxlen=0;//最大的连续数 char* start=NULL;//记录最大连续数指针开始的位置 if(*inputstr=='\0') return 0; while(*inputstr!='\0'){ while(*inputstr!=0&&isdigital(*inputstr)){ len++; inputstr++; } if(len>maxlen){ maxlen=len; start=(char*)(inputstr-maxlen); } len=0; if(*inputstr!='\0') inputstr++; } for(int i=0;i<maxlen;i++) *(outputstr++)=*(start++); cout<<outputstr<<endl; return maxlen; } int main(){ char *str="1234asdf234211jjl111122223312j"; char *str1=(char*)malloc(100*sizeof(char)); memset(str1,0,100);//如果没有这个操作,str1字符串就找不到正确的结束符,输出会出现乱码 int str_len; str_len=maxContinuNum(str,str1); cout<<str_len<<endl <<str1<<endl; system("pause"); return 1; }
另一种好的解决方法:
#include <stdio.h> int Findmaxlen(char *input,char *output); void main() { char input[]="abc123def123456ee123456789dd"; char output[50]={0}; int maxlen; maxlen=Findmaxlen(input,output); printf("the str %s\n",output); printf("the maxlen is %d \n",maxlen);} int Findmaxlen(char *input,char *output) {char *in=input,*out=output,*temp,*final; int count=0,maxlen=0,i; while(*in!='\0') { if(*in>='0'&&*in<='9') { count=0; for(temp=in;*in>='0'&&*in<='9';in++) count++; if(maxlen<count) { maxlen=count; final=temp; }//if }//if in++; }//while for(i=0;i<maxlen;i++) *out++=*final++; *out='\0'; return maxlen; }
发表评论
-
析构函数为虚函数的原因
2012-09-09 11:42 840我们知道,用C++开发的时候,用来做基类的类的析构函数 ... -
hash的应用
2012-08-31 23:02 966第一部分为一道百度面试题Top K算法的详解;第二部分为关 ... -
微软智力题
2012-08-29 19:59 574第一组1.烧一根不均匀的绳,从头烧到尾总共需要1个小时。现在有 ... -
C++不能被继承的类
2012-08-27 20:16 1064一个类不能被继承, ... -
括号对齐问题
2012-08-27 10:47 1416解法一:左右括号成一对则抵消 可以 ... -
树的遍历
2012-08-19 10:43 723/****************************** ... -
堆排序
2012-08-16 14:24 886堆:(二叉)堆数据结构是一种数组对象。它可以被视为一棵完全 ... -
多态赋值
2012-08-14 16:16 836#include <iostream> usi ... -
static变量与static函数(转)
2012-08-13 10:15 750一、 static 变量 static变量大致分为三种用法 ... -
不用sizeof判断16位32位
2012-08-10 15:21 1708用C++写个程序,如何判断一个操作系统是16位还是3 ... -
顺序栈和链栈
2012-08-06 10:01 803顺序栈:话不多说直接上代码 #include ... -
队列的数组实现和链表实现
2012-08-05 16:20 1028话不多少,数组实现上代码: #include<i ... -
KMP算法详解
2012-08-02 21:40 891KMP算法: 是在一个“主文本字符串” ... -
字符串的最长连续重复子串
2012-08-01 15:05 9784两种方法: 循环两次寻找最长的子串: <方法一> ... -
寻找一个字符串连续出现最多的子串的方法(转)
2012-07-31 21:19 1001算法描述首先获得后缀数组,然后1.第一行第一个字符a,与第二行 ... -
字符串的循环移位
2012-07-31 16:52 981假设字符串:abcdefg 左循环两位:cdefgab 右 ... -
一次谷歌面试趣事(转)
2012-07-31 15:26 775很多年前我进入硅谷 ... -
约瑟夫环问题(循环链表)
2012-07-30 21:31 1297题目描述:n只猴子要选大王,选举方法如下:所有猴子按 1, ... -
面试之单链表
2012-07-30 20:18 7311、编程实现一个单链表的建立/测长/打印。 ... -
多重继承内存地址问题
2012-07-30 15:55 731[cpp] view plaincopy ...
相关推荐
- 通过代码审查找出潜在的问题。 - 应用静态分析工具辅助检测。 - 提出改进建议,提高代码质量。 以上是对百度INF面试题库的部分知识点的总结,涉及了从基础的数据结构和算法,到高级的并发编程和系统设计等多个...
- 这是一个C++编程题目,要求找出以`\0`结束的字符串中最长的连续数字子串的长度,并返回该子串的首地址。通过遍历字符串,判断当前字符是否为数字,更新最大子串长度和起始位置。 7. **New Coke案例**: - 这是...
文件中给出了一段C++代码,旨在找出一个给定字符串中连续数字的最大长度,并返回这个最长连续数字串的起始位置。这段代码首先定义了一个名为`maxContinuNum`的函数,该函数接收两个参数:输入字符串`inputstr`和输出...
例如,笔试中可能会出现要求编写一个函数来找出字符串中包含的最长连续数字序列的题目,这直接考验了求职者的编程基础。还有关于URL存储和查询设计的题目,这类题目通常要求求职者具有对大数据处理和分布式系统设计...
3. 如何找出访问百度最多的 IP 4. 如何在大量的数据中找出不重复的整数 5. 如何查询最热门的查询串 6. 如何统计不同号码的个数 7. 如何从 5 亿个数中找出中位数 8. 如何按照 query 的... 本书涵盖了程序员面试笔试...
- **题目描述**:在排序数组中找出给定数字的出现次数。 - **解决方案**:可以使用二分查找找到目标值的起始和结束位置。 **11. 平面上点的斜率最大值** - **题目描述**:平面上N个点,找出斜率最大的那条直线所...
### 百度面试题解析 **24. 字符串反转** - **问题**: 实现字符串反转函数。 - **解法**: 使用两个指针,一个指向字符串开始位置,另一个指向结束位置,逐步交换对应位置的字符。 **25. 内存块复制** - **问题**...
可以用双指针法,一个指针扫描字符串,另一个记录当前连续数字串的结束位置,更新最长长度和结果字符串。时间复杂度为O(N),空间复杂度为O(1)。 12. 笔试准备: 笔试准备的重要性强调,需要对基础概念和常见算法...
22. 海盗分金币问题:使用动态规划,可以找出让最高级海盗获得最多金币的分配策略。 23. 组合最小整数:可以使用贪心策略,按升序遍历集合A,每次选择能构成最小整数的下一个数字。 【百度面试题解析】 24. 字符...
- 这道题目要求编写一个函数,找出以`\0`结束的字符串中最长的连续数字子串的长度,同时返回这个子串的起始位置。它使用了一个计数器`count`记录当前连续数字的个数,当遇到非数字字符时,更新最大子串长度`max`。 ...
- 该程序设计题要求实现一个函数,找出以 null 结束的字符串中最长的连续数字子串的长度,并返回该子串的首地址。程序中通过遍历字符串,判断当前字符是否为数字,并维护一个计数器 `count` 来跟踪连续数字的长度,...
- 文件:百度笔试之找出数组中第k大小的数(上下节) - 这类问题是排序算法的经典应用,可能需要掌握快速排序、归并排序、堆排序等方法,以及如何在O(n)时间复杂度内找到第k小的元素。 3. **蚂蚁与木杆问题**: ...
1.5.3. 在字符串中找出连续最长的数字串 ....................................................109 1.5.4. 链表操作..............................................................................................
给定多个线段,要求找出其中重合长度最长的两个线段。 #### 解决方案 首先,定义线段的结构体: ```cpp typedef struct { int left; int right; } Line; typedef struct { Line l1; Line l2; int length; } ...