返回给定字符串中最长连续数字串

/*
不用任何库函数,系统函数,
完成函数 int maxContinuNum(const char* inputstr,char *outputstr);
返回给定字符串中最长连续数字串,让outputstr指向该串,然后值是其长度。
例如sss12345ss1245sfdf123456789返回,9,outputstr指向123456789。
*/
#include <iostream>
using namespace std;
int maxContunuNum(const char* inputstr,char *outputstr)
{
	char *p=(char *)inputstr;
	int max=0,num=0;
	bool set=false;
	char *start;
	while (*p!='\0')
	{
		if((*p>='0')&&(*p<='9'))
		{
			if(set==false)
				start=p;//连续数字中只标记第一个数字的地址
			num++;//记录数出现的次数
			set=true;
		}
		else
		{
			if(num>max)//如果前面的一串数字是最长的
			{
				outputstr=start;//则把地址赋给outputstr
				max=num;//并记下最长的数字串的个数
			}
			set=false;//为下一轮连续数字做准备
			num=0;
		}
		p++;
	}
	if(num>max)
	{//防止最后一个字符是数字导致没有判断num>max
		outputstr=start;max=num;
	}
	cout<<"最长的数字串为:"<<endl;
	for(int i=0;i<max;i++)//输出最长的数字串
		cout<<*(outputstr+i);
	cout<<endl;
	return max;
}
int main()
{
	char *p="sss12345ss1234sdfaf123456789asfdfs12345678901231a";
	char out[100];
	cout<<"最长连续数字个数为"<<maxContunuNum(p,out)<<endl;
	return 0;
}
时间: 2024-10-26 15:25:45

返回给定字符串中最长连续数字串的相关文章

[华为机试练习题]43.在字符串中找出连续最长的数字串

题目 描述: 请一个在字符串中找出连续最长的数字串,并把这个串的长度返回:如果存在长度相同的连续数字串,返回最后一个连续数字串: 注意:数字串只需要是数字组成的就可以,并不要求顺序,比如数字串"1234"的长度就小于数字串"1359055",如果没有数字,则返回空字符串("")而不是NULL! 样例输入 abcd12345ed125ss123058789 abcd12345ss54761 样例输出 输出123058789,函数返回值9 输出547

字符串中找出连续最长的数字字符串的实例代码_C 语言

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

把字符串中的任意连续字符换成一个对应字符

<?php //1,把字符串中的任意空格换成一个 $str1 = 'A B C '; echo '<xmp>'; echo '1:'; echo preg_replace ("/\s+/", ' ', $str1); echo '</xmp>'; //2,把字符串中的任意连续字符 M 换成一个 M echo '2: '; $str1 = 'AMMMBMMMMCMM '; echo preg_replace ("/M+/", 'M', $

asp 去除字符串中的空格和数字正则表达式

本文章为你提供一款超好的asp教程 去除字符串中的空格和数字正则表达式哦,这四款替换空格与数字的正则是各有不同哦. <script language="网页特效" type="text/javascript"> var str; str="10    3333    abc123"; var rg; rg=/[0-9]{1,}|s/ig; var newstr=str.replace(rg, ""); docume

C# 字符串中多个连续空格转为一个空格

#region 字符串中多个连续空格转为一个空格 /// <summary> /// 字符串中多个连续空格转为一个空格 /// </summary> /// <param name="str">待处理的字符串</param> /// <returns>合并空格后的字符串</returns> public static string MergeSpace(string str) { if (str != string

求字符串中最长无重复字符的子串

题目:求一个字符串中最长的没有重复字符的子串. 方法一:穷举法,使用2重外循环遍历所有的区间,用2重内循环检验子串是否符合"无重复字符"这一要求.其中外层循环i.j 遍历所有的下标,m.n是内层循环,检查区间[i,j]是否符合要求.空间复杂度是O(1),时间复杂度O(N^4). //O(N^4)的时间复杂度 int max_unique_substring1(char * str) { int maxlen = 0; int begin = 0; int n = strlen(str)

字符串中最长并至少出现2次的子串

问题描述 字符串中最长并至少出现2次的子串 作为依依的好朋友,技术男沛沛在依依生日时送给他一个超长字符串 S .沛沛要依依在其中找出一个最长的字符串 T ,使得 T 在 S 中至少出现了两次,而他想说的秘密就藏在 T 中.由于字符串实在是太长了,依依总是找不到合适的 T .于是依依请你帮他找到这个 T 的长度. [输入格式]一行.一个字符串,即题目中说的S . [输出格式]一行.一个整数,表示最长的 T 的长度. [样例输入]ababa [样例输出]3 「数据范围」对于 30% 的数据,S长度

c++怎么将字符串中的汉字和数字分别存入不同字符指针所指空间?

问题描述 c++怎么将字符串中的汉字和数字分别存入不同字符指针所指空间? 如字符串:测试1次 将 测试 存入char*s 将 1 存入char* p 解决方案 只能想到一个一个字符的遍历,然后分别赋值给2个数组.如果确定输入的是"字符,字符,数字,字符"的格式,可以接收的时候就用格式化接收把他们分开. 解决方案二: #include int isalnum(int c); int isalpha(int c); int isascii(int c); int isblank(int c

c++-如何提取字符串中的字符型数字

问题描述 如何提取字符串中的字符型数字 char a[100]="delete N";//N为数字 要想把里面的N提取出来,因为N是字符串里的数字,所以应该是字符型,怎么把它转化 为整型(int)呢? 求解答! 解决方案 仅供参考 int getNum(char a[]) { int i =0,num =0; while(a[i] != '') { if( a[i] >= '0' && a[i] <= '9') num = num *10 +a[i] - '