读入一个字符串str,输出字符串str中连续最长的数字串
要求:
读入一个长度不超过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中连续最长的数字串的更多相关文章
- ZT 查找字符串中连续最长的数字串
查找字符串中连续最长的数字串 有俩方法,1)比较好理解一些.2)晦涩 1) /* 功能:在字符串中找出连续最长的数字串,并把这个串的长度返回, 并把这个最长数字串付给其中一个函数参数outputstr ...
- 算法:输入一个链表,输出该链表中倒数第k个结点。
算法:输入一个链表,输出该链表中倒数第k个结点.<剑指offer> 思路加到注释里面了: 1:两个if判断是否返回值为空,首个为空,没有第k个值: 2:for循环找到倒数第k个值,返回为a ...
- 【剑指offer】输入一个链表,输出该链表中倒数第k个结点。
一.题目: 输入一个链表,输出该链表中倒数第k个结点. 二.思路: 用两个指针p1和p2,p2先跑k步,然后p1和p2同时跑,p2跑到头p1所在的位置就是倒数第k个节点.很简单吧?简单你也想不到,想到 ...
- 【c语言】输入一个递增排序的数组的一个旋转,输出旋转数组中的最小元素
//旋转数组的最小数字 //题目:把一个数组最開始的若干个元素搬到数组的末尾.我们称之为数组的旋转. //输入一个递增排序的数组的一个旋转.输出旋转数组中的最小元素. //比如:数组{3.4,5,1, ...
- 剑指offer14:输入一个链表,输出该链表中倒数第k个结点。
1. 题目描述 输入一个链表,输出该链表中倒数第k个结点. 2. 思路和方法 可以用两个指针,一个指针遍历到第k个结点的时候,第二个指针再走到第一个节点,然后两个指针的距离始终保持k-1.这样,当第一 ...
- 剑指Offer-14:输入一个链表,输出该链表中倒数第k个结点。
题目描述: 输入一个链表,输出该链表中倒数第k个结点.例如有一个链表有六个节点1,2,3,4,5,6.则它的倒数第二个节点为5 节点定义如下: public class ListNode { int ...
- C语言风格字符串的概念、定义、输入字符串、输出字符串
字符串: C语言中最有用.最重要的数据类型之一. 字符串:是以\0字符结尾的char类型数组.所以可以把数组和指针知识应用于字符串. 如何在程序定义字符串: 1.字符串字面量 用双引号括起来的内容称为 ...
- 输入一个链表,输出该链表中倒数第k个结点。
// test14.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include<iostream> #include< ...
- 编程题目:输入一个链表,输出该链表中倒数第k个节点
两种方法 1.在链表的初始化数据中加入 num 数据, 每添加一个节点,num加1,每删除一个节点,num减1 查找倒数第k个元素,即 指向第一个节点的指针向后移动 num - k 步. 2.使用两个 ...
随机推荐
- poj3155 最大密度子图
求最大密度子图 记得在最后一次寻找的时候记得将进入的边放大那么一点点,这样有利于当每条边都满流的情况下会选择点 #include <iostream> #include <algor ...
- Java try和catch的使用介绍
尽管由Java运行时系统提供的默认异常处理程序对于调试是很有用的,但通常你希望自己处理异常.这样做有两个好处.第一,它允许你修正错误.第二,它防止程序自动终止.大多数用户对于在程序终止运行和在无论何时 ...
- 用java生成32位全球唯一的id编号
GUID是一个128位长的数字,一般用16进制表示.算法的核心思想是结合机器的网卡.当地时间.一个随即数来生成GUID.从理论上讲,如果一台机器每秒产生10000000个GUID,则可以保证(概率意义 ...
- mysql日期操作
一.获取当前日期时间 1.1.获得当前日期+时间(date+time)函数:now() 1.2.获取当前日期+时间(date+time)函数:sysdate() 注:二者类拟,不同在于now()在执行 ...
- 2019/3/28 wen 继承
- Luogu P1892 P1525 团伙 关押罪犯
(怎么都是抓罪犯 怪不得写法差不多) 团伙 关押罪犯 并查集.以"敌人的敌人是朋友"的思路来处理.所以增加一个e/E数组来存储敌人. 关押罪犯还用到了贪心的思路.将冲突值从大到小排 ...
- shiro权限管理入门程序
最近在学shiro,觉得入门程序还是有用的,记下来防止遗忘,也可供大家参考. package cn.itcast.shiro.authentication; import org.apache.shi ...
- Learning-Python【11】:函数嵌套及作用域
一.函数对象 函数是第一类对象:函数的内存地址(即函数名)可以像一个变量值一样去使用 1.变量值可以被引用,例如 x = 1,y = x def foo(): print('from foo') f ...
- Jade入门学习笔记
jade是超高性能的node JavaScript模板引擎,有着非常强大的API和大量杰出的特性.它主要针对node的服务端.由于商标的原因,改为Pug,哈巴狗.Pug有它本身的缺点--可移植性差,调 ...
- 给<input type="color">设置默认值
参考:https://stackoverflow.com/questions/14943074/html5-input-colors-default-color?utm_medium=organic& ...