要求:

读入一个长度不超过256的字符串,例如“abc123defg123456789hjfs123456”。要求输出“123456789”

思路:

遍历字符串,如果是数字串则计算往后一共有多少个数字,计算出数字的开头与长度添加的容器中,往后继续读取;

遍历完字符串后遍历容器中存储的长度最长的Value。

具体代码如下:

/************************************************************************/
/* Project: 输出字符串中连续最长的数字串 */
/* Author: */
/* Time: 2017/10/03 */
/* Description: 读入一个字符串str,输出字符串str中连续最长的数字串 */
/************************************************************************/ #include "stdafx.h"
#include <iostream>
#include <ctype.h>
#include <vector>
using namespace std; char* GetLongestNumber(char* pBuf, size_t nSize, char** pNum); ////////////////////////////////////////////////////////////////////////// int _tmain(int argc, _TCHAR* argv[])
{
char* pBuf = new char[128];
memset(pBuf, 0, sizeof(char)* 128);
cin.getline(pBuf, 128);
char* pNum = NULL;
GetLongestNumber(pBuf, 128, &pNum);
if (pNum)
cout << "The longest number is:" << pNum << endl;
else cout << "Cannot find Longest number string." << endl; delete[] pBuf;
pBuf = NULL;
system("pause");
return 0;
} ////////////////////////////////////////////////////////////////////////// typedef struct data
{
char* p;
int nLength;
data()
{
p = NULL;
nLength = 0;
}
}DATA, *LPDATA; ////////////////////////////////////////////////////////////////////////// char* GetLongestNumber(char* pBuf, size_t nSize, char** pNum)
{
if (!pBuf || nSize <= 0 || !pNum)return NULL;
vector<DATA> vect;
DATA da; // 遍历字符串
for (int i = 0; i < strlen(pBuf); i++)
{
if (isdigit(*(pBuf + i)))
{
// 往后查找数字字符
int nCount = i;
while (isdigit(*(pBuf + nCount)))
nCount++;
da.p = pBuf + (i - 1);
da.nLength = nCount - (i - 1);
vect.push_back(da); // 插入相关信息到vector中
da.p = NULL;
da.nLength = 0;
i = nCount;
}
i++;
} // 计算Vector中.nLength最大的元素
auto it = vect.end() -1;
DATA Max = *it;
it--;
while (it >= vect.begin())
{
if (it->nLength > Max.nLength)
Max = *it;
if(it != vect.begin())it--;
else break;
} // 得到最长的数字串
*pNum = new char[Max.nLength + 1];
memset(*pNum, 0, sizeof(char)* Max.nLength + 1);
memcpy(*pNum, Max.p, Max.nLength);
return *pNum;
} //////////////////////// End of File ///////////////////////////////

  

读入一个字符串str,输出字符串str中连续最长的数字串的更多相关文章

  1. ZT 查找字符串中连续最长的数字串

    查找字符串中连续最长的数字串 有俩方法,1)比较好理解一些.2)晦涩 1) /* 功能:在字符串中找出连续最长的数字串,并把这个串的长度返回, 并把这个最长数字串付给其中一个函数参数outputstr ...

  2. 算法:输入一个链表,输出该链表中倒数第k个结点。

    算法:输入一个链表,输出该链表中倒数第k个结点.<剑指offer> 思路加到注释里面了: 1:两个if判断是否返回值为空,首个为空,没有第k个值: 2:for循环找到倒数第k个值,返回为a ...

  3. 【剑指offer】输入一个链表,输出该链表中倒数第k个结点。

    一.题目: 输入一个链表,输出该链表中倒数第k个结点. 二.思路: 用两个指针p1和p2,p2先跑k步,然后p1和p2同时跑,p2跑到头p1所在的位置就是倒数第k个节点.很简单吧?简单你也想不到,想到 ...

  4. 【c语言】输入一个递增排序的数组的一个旋转,输出旋转数组中的最小元素

    //旋转数组的最小数字 //题目:把一个数组最開始的若干个元素搬到数组的末尾.我们称之为数组的旋转. //输入一个递增排序的数组的一个旋转.输出旋转数组中的最小元素. //比如:数组{3.4,5,1, ...

  5. 剑指offer14:输入一个链表,输出该链表中倒数第k个结点。

    1. 题目描述 输入一个链表,输出该链表中倒数第k个结点. 2. 思路和方法 可以用两个指针,一个指针遍历到第k个结点的时候,第二个指针再走到第一个节点,然后两个指针的距离始终保持k-1.这样,当第一 ...

  6. 剑指Offer-14:输入一个链表,输出该链表中倒数第k个结点。

    题目描述: 输入一个链表,输出该链表中倒数第k个结点.例如有一个链表有六个节点1,2,3,4,5,6.则它的倒数第二个节点为5 节点定义如下: public class ListNode { int ...

  7. C语言风格字符串的概念、定义、输入字符串、输出字符串

    字符串: C语言中最有用.最重要的数据类型之一. 字符串:是以\0字符结尾的char类型数组.所以可以把数组和指针知识应用于字符串. 如何在程序定义字符串: 1.字符串字面量 用双引号括起来的内容称为 ...

  8. 输入一个链表,输出该链表中倒数第k个结点。

    // test14.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include<iostream> #include< ...

  9. 编程题目:输入一个链表,输出该链表中倒数第k个节点

    两种方法 1.在链表的初始化数据中加入 num 数据, 每添加一个节点,num加1,每删除一个节点,num减1 查找倒数第k个元素,即 指向第一个节点的指针向后移动 num - k 步. 2.使用两个 ...

随机推荐

  1. Flask最强攻略 - 跟DragonFire学Flask - 第十四篇 Flask-SQLAlchemy

    前不久刚刚认识过了SQLAlchemy,点击这里复习一下 当 Flask 与 SQLAlchemy 发生火花会怎么样呢? Flask-SQLAlchemy就这么诞生了 首先要先安装一下Flask-SQ ...

  2. powerdesigner相关记录

    背景 项目逐步开始规范化,表设计直接用designer来,然后生成语句,到oracle数据库,把相关的操作等记录一下, designer版本:15.1 oracle版本:11.2,64位 oracle ...

  3. 使用shiro框架,注销问题的解决

    在使用shiro框架的时候,有时候会因为登录问题找不到注销的controller.所以会报404的错误,下面是解决办法: 1.首先写一个类SystemLogoutFilter继承LogoutFilte ...

  4. Google 开发的、最好用、功能最强大的网页测速与网站性能分析工具

    https://www.webpagetest.org/细致到每一个资源的加载都是完全可视化,包含详细的数据分析.开发完成自己的网站后一定要进行一下测试,你会发现还有很多可以优化的点.

  5. 虚拟机下Linux安装jdk

    1.利用共享文件夹复制本地硬盘下(H:/share)的压缩包到指定目录 cp jdk-8u161-linux-x64.tar.gz /soft/jdk 2.进入/soft/jdk目录下,解压jdk到当 ...

  6. mysql获取随机字符串和随机数的方法

    在我们开发的过程中,我们可能会需要在表中随机生成一些数据以供我们进行相应的测试. 就像我之前发的“mysql创建存储过程向数据表中加入规定条数的数据” 那么我们应该怎样生成随机的字符串和随机数字呢? ...

  7. mysql 主键外键

    外键MUL:一个特殊的索引,用于关键2个表,只能是指定内容 主键PRI:唯一的一个不重复的字段.   # 创建一个表用来引用外键 create table class( -> id int no ...

  8. Linux 网络管理、软件包安装

    1.fdisk -l 查看处系统磁盘设备,打boot“*”的是系统启动的磁盘块. (1)查看磁盘Disk /dev/sdb:5368MB(总大小),5368709120bytes(比特位) (2)25 ...

  9. 03:open-falcon报警定制

    1.1 配置报警 11111111111111111111

  10. shiro 分布式缓存用户信息

    很多分布式缓存登录用户信息一般都是存在redis类似的缓存里面.其中实现细节或者拆分都是大同小异. 一般用户登录权限管理都用shiro处理. 如果仔细分应该就是一下3种. 1,有一个单独的用户权限管理 ...