算法习题25:写一个函数,它的原形是int continumax(char *outputstr,char *intputstr)
2013-10-20 16:01
537 查看
来自:http://bbs.csdn.net/topics/350118968
写一个函数,它的原形是int continumax(char *outputstr,char *intputstr)
功能:
在字符串中找出连续最长的数字串,并把这个串的长度返回,
并把这个最长数字串付给其中一个函数参数outputstr所指内存。
例如:"abcd12345ed125ss123456789"的首地址传给intputstr后,函数将返回9,
outputstr所指的值为123456789
-------------------------------------------------------------
郁闷了那道拿纸牌猜纸牌的题目,现在终于遇到一题简单点的了,
这题目应该在笔试中是经常会出现的,面试就不太可能了(确实难度较低)
这里有几点注意下:
1、用cin和gets区别 cin把空格当成了字符串的终止输入符号,所以如果输入
sf233 2342 djf3
用cin 给出的是3
而用gets()给出的是4
这里需要注意
2、如果这里给的 outputstr内存不够容纳数字序列怎么办?
暂时就想到这些
说下这题思路把,就是挨个判断是否是数字,记录下最长的长度即可,时间复杂度O(n)
其实记录start或者end只需要记录一个就好 另一个可以通过max来计算得到
输出
写一个函数,它的原形是int continumax(char *outputstr,char *intputstr)
功能:
在字符串中找出连续最长的数字串,并把这个串的长度返回,
并把这个最长数字串付给其中一个函数参数outputstr所指内存。
例如:"abcd12345ed125ss123456789"的首地址传给intputstr后,函数将返回9,
outputstr所指的值为123456789
-------------------------------------------------------------
郁闷了那道拿纸牌猜纸牌的题目,现在终于遇到一题简单点的了,
这题目应该在笔试中是经常会出现的,面试就不太可能了(确实难度较低)
这里有几点注意下:
1、用cin和gets区别 cin把空格当成了字符串的终止输入符号,所以如果输入
sf233 2342 djf3
用cin 给出的是3
而用gets()给出的是4
这里需要注意
2、如果这里给的 outputstr内存不够容纳数字序列怎么办?
暂时就想到这些
说下这题思路把,就是挨个判断是否是数字,记录下最长的长度即可,时间复杂度O(n)
其实记录start或者end只需要记录一个就好 另一个可以通过max来计算得到
//============================================================================ // Name : ContinueMax.cpp // Author : YLF // Version : // Copyright : Your copyright notice // Description : Hello World in C++, Ansi-style //============================================================================ #include <iostream> #include <stdio.h> #include <string.h> using namespace std; #define MAX 100 int continumax(char *outputstr,char *intputstr); int main() { char arr[MAX]; memset(arr,0,sizeof(arr)); // cin>>arr; gets(arr); char out[MAX]; memset(out,0,sizeof(out)); int len = continumax(out, arr); cout<<len<<endl<<out; return 0; } int continumax(char *outputstr,char *intputstr){ int start=0, end=0, max=0; int tempStart=0, tempMax=0; int length = strlen(intputstr); int cur=0; for(;cur<length;cur++){ char c = intputstr[cur]; if(c>='0' && c<='9'){ if(tempMax == 0){ tempStart=cur; } tempMax++; }else{ //如果出现非数字的,需要比较下这时候的tempMax是否比之前的还大 if(tempMax>max){ start = tempStart; end = cur; max = tempMax; tempMax=0; } } } if(tempMax>max){ start = tempStart; end = cur; max = tempMax; tempMax=0; } for(cur=0;cur<end-start;cur++) outputstr[cur]= intputstr[cur+start]; return max; }
输出
sf23 3423sf23423423 8 23423423
相关文章推荐
- 微软面试100题之25题:写一个函数,它的原形是int continumax(char *outputstr,char *intputstr)
- 25.写一个函数,它的原形是int continumax(char *outputstr,char *intputstr)
- 25.写一个函数,它的原形是int continumax(char *outputstr,char *intputstr)
- 第25 题: 写一个函数,它的原形是int continumax(char *outputstr,char *intputstr)
- 第25题: 写一个函数,它的原形是int continumax(char *outputstr,char *intputstr),在字符串中找出连续最长的数字串,并把这个串的长度返回
- 写一个函数,它的原形是int continumax(char *outputstr,char *intputstr)
- 【练习】写一个函数,它的原形是int continumax(char *outputstr,char *intputstr)功能:在字符串中找出连续最长的数字串,并把这个串的长度返回,
- 写一个函数,它的原形是int continumax(char *outputstr,char *intputstr)
- 写一个函数,它的原形是int continumax(char*outputstr,char*intputstr)
- 第25 题:写一个函数,它的原形是int continumax(char *outputstr,char *intputstr)
- 【微软100题】写一个函数,它的原形是int continumax(char *outputstr,char *intputstr) 功能: 在字符串中找出连续最长的数字串,并把这个串的长度返回
- 编写一个函数,有如下函数原型: 函数:int continum(char *intputstr,char *outputstr). 给一个字符串,要求找到里面连续的串,并且串的长度是所有连续串中
- 全国计算机等级二级C++第四章习题编程题6 :编写一个函数 char *strfind(char *s, char *t),用于查找字符串t在字符串s中最右边出现的位置,如果没有找到则返回NULL.
- 编写一个函数,删除字符串中的一段字符,函数原型为: int fun(char *p,int start,int end); 返回值为删除字符数, start 开始位置,end 结束位置。
- 编写一个函数 int count_chars(char const *str,char const *chars) 函数应该在第一个参数中进行查找, 并返回匹配第二个参数所包含的字符的数量。
- 算法题 用C或C++实现void reverse(char* str)函数,即反转一个null结尾的字符串
- 阿里巴巴面试算法题:有一个函数int getNum(),每运行一次可以从一个数组V[N]里面取出一个数,N未知,当数取完的时候,函数返回NULL。现在要求写一个函数int get(),这个函数运行一次可以从V[N]里随机取出一个数,而这个数必须是符合1/N
- 习题 8.17 写一函数,实现两个字符串的比较。即自己写一个strcmp函数,函数原型为int strcmp(char *p1, char *p2);
- 编写一个函数,它从一个字符串中提取一个子字符串。函数原型如下: Int substr(char dst[], char src[],int start, int len) {} 目标是:从src数组
- 编写一个程序,分别以signed和unsigned限定的char、short、int与long类型的变量取值范围