微软面试题之一,难度系数低。

题目描述如下:

写一个函数,它的原形是int continumax(char *outputstr,char *intputstr) 
功能: 
在字符串中找出连续最长的数字串,并把这个串的长度返回, 
并把这个最长数字串付给其中一个函数参数outputstr 所指内存。 
例如:"abcd12345ed125ss123456789"的首地址传给intputstr 后,函数将返回9, 
outputstr 所指的值为123456789

逻辑分析:

1、题目描述的倒是很充分,相比较最长子序列系列问题,难度上实在是显得太单薄了。最直观的想法,当然是遍历整个字符串,记录下所有的数字串,然后统计数字串长度,进行比较。

2、上述方法虽然可行,不过很明显,对于数字串的记录过程过于繁琐,实际上,我们完全可以在第一次遍历的同时,利用数字串的长度来进行“淘汰”,完美的O(n)时间复杂度,狂拽霸酷炫!

源码如下:

#include <stdio.h>int continumax(char *outputstr, char *inputstr)
{int len = 0, max = 0;char *pstart = NULL;while(1){if(*inputstr >= '0' && *inputstr <= '9'){len++;}else {if(len > max){pstart = inputstr-len;max = len;}len = 0;}if(*inputstr++ == '\0') break;}for(int i=0; i<max; i++)*outputstr++ = *pstart++;*outputstr = '\0';return max;
}int main()
{char str[] = "abcd12345ed125ss123456789";int n = continumax(str,str);puts(str);printf("%d\n",n);return 0;
}

注:逻辑虽然简单,不过编程细节上还是容易犯错误,试着改写while的条件以及 *inputstr++ == '\0'的位置,你会找到迷之bug^.^

在字符串中找出连续最长的数字串相关推荐

  1. 《好未来编程题》字符串中找出连续最长的数字串

    题目:读入一个字符串str,输出字符串str中的连续最长的数字串 输入描述: 个测试输入包含1个测试用例,一个字符串str,长度不超过255. 输出描述: 在一行内输出str中里连续最长的数字串. 示 ...

  2. 找出连续最长数字串python_字符串中找出连续最长的数字字符串的实例代码

    //1. 写一个函数,它的原形是int continumax(char *outputstr,char *intputstr) //功能: //在字符串中找出连续最长的数字串,并把这个串的长度返回, ...

  3. 在字符串中找出连续最长的英文字符串

    1.不区分大小写 2.返回连续最长串的长度 3.拷贝给新串 例如:输入123abcdefg2141as324 返回最长字串为abcdefg 字串长度为7 #include <stdio.h> ...

  4. 输入一个字符串,用子函数完成在字符串中找出ACSII码值最大的字符,将其放在第一个位置,并将该字符前的所有字符向后顺序移动

    <程序设计基础实训指导教程-c语言> ISBN 978-7-03-032846-5 p143 7.1.2 上级实训内容 [实训内容9]输入一个字符串,用子函数完成在字符串中找出ACSII码 ...

  5. 编写一个程序,从10亿个数字的数组中找出100个最大的数字

    本文翻译自:Write a program to find 100 largest numbers out of an array of 1 billion numbers I recently at ...

  6. 在一个字符串中找出最长回文子串

    如何高效的在一个字符串中找到最长的回文子串呢?下面我们根据代码来分析 首先,回文串有两种,一种是字符串的长度是偶数,另一种就是奇数.我们从字符串第二个字符开始,我们把当前起始字符叫做i.        ...

  7. 在字符串中找出第一个只出现一次的字符,Python实现

    要求: 1. 不能依赖库函数直接实现此功能,需使用基础的数据结构实现 2. 时间复杂度 O(n) 思路: 1. 用字典存储每个字符在字符串中出现的次数 2. 列表是有序的,用来存储字符的出现先后 3. ...

  8. 从字符串中筛选出连续的数字,并将其放入另一个数组!

    题目(摘自谭克强版C语言):    输入一个字符串,内有数字和非数字字符,如a123x456as789x123,将其中连续的数字作为一个整数,依次存放到数组a中,例如存放123在a[0]中,并统计共有 ...

  9. python查找字符串数量_python如何实现从字符串中找出字符1的位置以及个数的示例...

    #!/bin/env python #-*- coding:utf-8 -*- # """ 用enumerate将string中的1都找出来, 用enumerate实现: ...

最新文章

  1. 【原】东拼西凑PBR(1):PBR基础
  2. LINUX inner-process communication
  3. java字符串,包,数组及空心正方形,菱形的实例
  4. linux c 重定向流后的恢复 freopen后的恢复
  5. Android小结(1)
  6. boost::hana::size用法的测试程序
  7. 英语发音表及读法_如何一个人练习英语口语?
  8. eclipse 启动tomcat时弹出错误 Multiple Contexts hava a path of “/xxx”
  9. getopt()简介
  10. SpringBoot开发案例之整合Spring-data-jpa
  11. 地球上最神奇的10种物质,打赌你都没见过!
  12. 华为修改优先级命令_华为配置命令大全
  13. mysql 修改字符集为utf8mb4
  14. 实现算法2.15、2.16的程序(一个数组只生成一个静态链表)
  15. 2017年秋季学期获“领跑衫”感言
  16. foobar2000的使用
  17. AS常用指令,常用功能,以及常见问题
  18. docker安装mssql
  19. 电脑数据怎么迁移?6种旧电脑数据传输到新电脑方法分享
  20. hive中的绣花模型_跨界媒介的碰撞:蜂巢+刺绣 | Ava Roth 「艺术访谈」

热门文章

  1. (非usb方式)树莓派4BCentos系统下使用SIM7600G-H进行4G上网(PPPD模式)(直接插在树莓派上使用)
  2. Element UI 日期范围选择器限制只能选今天之前的时间,或者只能选今天之后的时间
  3. 由参数方程所确定的函数的导数
  4. java IO的学习记录
  5. 【matlab】怎么记录和保存运行结果-diary 命令
  6. 营销理论扫盲贴:4P/4C/4R/4S
  7. 16s rRNA微生物分析报告如何获得关键和有用分析
  8. 文件编辑器—vim使用
  9. Oracle前台主机,Oracle 数据库主机巡检
  10. 解决使用打印机打印网页时字体颜色变淡的问题