要求:

读入一个长度不超过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. Rocketmq源码导入eclipse时报错的解决方法

    1,Plugin execution not covered by lifecycle configuration: org.apache.maven.plugins:maven-help-plugi ...

  2. Shell data、timedatectl

     data系统时间管理命令 命令date +%F xxxx—xx--xx #查看当前日期. 命令date +%T xx:xx:xx #查看当前时间. 命令date +%y xx #年2位 命令date ...

  3. Heroku 云服务部署流程

    部署操作: heroic create bluefocus mkdir heroku && cd heroku --------------------- git init herok ...

  4. ts文件编译后变量在vscode里报错

    需要将编译过的同名js文件删除才可以

  5. centos7 install nginx+fastdfs

    说明:centos7单机部署 nginx fastdfs ## 创建一下目录作为存储数据图片的路径 可以自己定义 mkdir -pv /data/application/{storage,tracke ...

  6. 【Python61--异常处理】

    一.URLrror 当我们的urlopen无法处理一个响应的时候就会出现一个urlerror的错误,但同时url会伴随一个res的属性,包含一个由错误编码和错误信息url 举例: import url ...

  7. bzoj1133: [POI2009]Kon

    bzoj1133: [POI2009]Kon 链接 https://www.lydsy.com/JudgeOnline/problem.php?id=1133 思路 f[i][k]表示前i个,选了k个 ...

  8. GIT 私有仓库 github项目提交失败 master -> master (non-fast-forward)

    https://blog.csdn.net/fightingforcv/article/details/52073182 https://blog.csdn.net/u014135752/articl ...

  9. Bytom 移动端钱包SDK FAQ

    比原链移动端钱包SDK项目地址:https://github.com/Bytom-Community/Bytom-Mobile-Wallet-SDK 1.客户端钱包SDK需要实现哪些功能? 创建密钥. ...

  10. GPU并行的基础知识