`
蒙面考拉
  • 浏览: 161119 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

找出连续最长的数字串(百度面试)

 
阅读更多

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;
} 

 

分享到:
评论

相关推荐

    百度INF面试题库

    - 通过代码审查找出潜在的问题。 - 应用静态分析工具辅助检测。 - 提出改进建议,提高代码质量。 以上是对百度INF面试题库的部分知识点的总结,涉及了从基础的数据结构和算法,到高级的并发编程和系统设计等多个...

    百度笔试题面试题集总

    - 这是一个C++编程题目,要求找出以`\0`结束的字符串中最长的连续数字子串的长度,并返回该子串的首地址。通过遍历字符串,判断当前字符是否为数字,更新最大子串长度和起始位置。 7. **New Coke案例**: - 这是...

    (1912制作)百度笔试题面试题集总(总81页)

    文件中给出了一段C++代码,旨在找出一个给定字符串中连续数字的最大长度,并返回这个最长连续数字串的起始位置。这段代码首先定义了一个名为`maxContinuNum`的函数,该函数接收两个参数:输入字符串`inputstr`和输出...

    百度的求职之路,详细介绍了百度的笔试面试过程

    例如,笔试中可能会出现要求编写一个函数来找出字符串中包含的最长连续数字序列的题目,这直接考验了求职者的编程基础。还有关于URL存储和查询设计的题目,这类题目通常要求求职者具有对大数据处理和分布式系统设计...

    《C 程序员面试算法宝典》读书笔记模板x.pptx

    3. 如何找出访问百度最多的 IP 4. 如何在大量的数据中找出不重复的整数 5. 如何查询最热门的查询串 6. 如何统计不同号码的个数 7. 如何从 5 亿个数中找出中位数 8. 如何按照 query 的... 本书涵盖了程序员面试笔试...

    微软、谷歌、百度等公司经典面试100题[第101-170题].pdf

    - **题目描述**:在排序数组中找出给定数字的出现次数。 - **解决方案**:可以使用二分查找找到目标值的起始和结束位置。 **11. 平面上点的斜率最大值** - **题目描述**:平面上N个点,找出斜率最大的那条直线所...

    华为面试180题(软件)

    ### 百度面试题解析 **24. 字符串反转** - **问题**: 实现字符串反转函数。 - **解法**: 使用两个指针,一个指向字符串开始位置,另一个指向结束位置,逐步交换对应位置的字符。 **25. 内存块复制** - **问题**...

    计算机笔试题 百度

    可以用双指针法,一个指针扫描字符串,另一个记录当前连续数字串的结束位置,更新最长长度和结果字符串。时间复杂度为O(N),空间复杂度为O(1)。 12. 笔试准备: 笔试准备的重要性强调,需要对基础概念和常见算法...

    微软面试15题

    22. 海盗分金币问题:使用动态规划,可以找出让最高级海盗获得最多金币的分配策略。 23. 组合最小整数:可以使用贪心策略,按升序遍历集合A,每次选择能构成最小整数的下一个数字。 【百度面试题解析】 24. 字符...

    百度笔试题面试题集总(总81页).docx

    - 这道题目要求编写一个函数,找出以`\0`结束的字符串中最长的连续数字子串的长度,同时返回这个子串的起始位置。它使用了一个计数器`count`记录当前连续数字的个数,当遇到非数字字符时,更新最大子串长度`max`。 ...

    百度笔试题面试题集总(总81页).doc

    - 该程序设计题要求实现一个函数,找出以 null 结束的字符串中最长的连续数字子串的长度,并返回该子串的首地址。程序中通过遍历字符串,判断当前字符是否为数字,并维护一个计数器 `count` 来跟踪连续数字的长度,...

    百度历年笔试试题汇总

    - 文件:百度笔试之找出数组中第k大小的数(上下节) - 这类问题是排序算法的经典应用,可能需要掌握快速排序、归并排序、堆排序等方法,以及如何在O(n)时间复杂度内找到第k小的元素。 3. **蚂蚁与木杆问题**: ...

    世界500强面试题.pdf

    1.5.3. 在字符串中找出连续最长的数字串 ....................................................109 1.5.4. 链表操作..............................................................................................

    2012百度最新笔试题总结

    给定多个线段,要求找出其中重合长度最长的两个线段。 #### 解决方案 首先,定义线段的结构体: ```cpp typedef struct { int left; int right; } Line; typedef struct { Line l1; Line l2; int length; } ...

Global site tag (gtag.js) - Google Analytics