码迷,mamicode.com
首页 > 其他好文 > 详细

在字符串中找出连续最长的数字串

时间:2015-04-29 19:49:50      阅读:122      评论:0      收藏:0      [点我收藏+]

标签:

题目描述

 

请一个在字符串中找出连续最长的数字串,并把这个串的长度返回;如果存在长度相同的连续数字串,返回最后一个连续数字串;

注意:数字串只需要是数字组成的就可以,并不要求顺序,比如数字串“1234”的长度就小于数字串“1359055”,如果没有数字,则返回空字符串(“”)而不是NULL!

样例输入

abcd12345ed125ss123058789

abcd12345ss54761

 

样例输出

输出123058789,函数返回值9

输出54761,函数返回值5

 

 

接口说明

函数原型:

   unsignedint Continumax(char** pOutputstr,  char* intputstr)

输入参数:
   char* intputstr  输入字符串;

输出参数:
   char** pOutputstr连续最长的数字串,如果连续最长的数字串的长度为0,应该返回空字符串;如果输入字符串是空,也应该返回空字符串;  

返回值:
  
连续最长的数字串的长度


注意的地方是指向指针的指针,上个代码:

#include<iostream>
//#include<string>
//#include<algorithm>
//#include<cmath>
//#include<vector>
//#include<stack>
//#include<iomanip>
using namespace std;

        
/* 功能:在字符串中找出连续最长的数字串,并把这个串的长度返回
函数原型:
   unsigned int Continumax(char** pOutputstr,  char* intputstr)
输入参数:
   char* intputstr  输入字符串
输出参数:
   char** pOutputstr: 连续最长的数字串,如果连续最长的数字串的长度为0,应该返回空字符串
   pOutputstr 指向的内存应该在函数内用malloc函数申请,由调用处负责释放

返回值:
  连续最长的数字串的长度

 */
unsigned int Continumax(char** pOutputstr,  char* intputstr)
{
	if(pOutputstr==NULL || intputstr==NULL)return 0;
	int i,k,counti,maxcount,starti,maxstart;
	int slen=strlen(intputstr);
	*pOutputstr=(char *)malloc(slen+1);

	//cout<<slen<<endl;

	k=0;
	maxcount=0;
	while(k<slen){
		for(i=k;i<slen;i++)
		{
			if(intputstr[i]>='0' && intputstr[i]<='9')
			{
				starti=i;
				break;
			}
		}
		if(i==slen) break;
		counti=0;
		for(i=starti;i<slen;i++)
			if(intputstr[i]>='0' && intputstr[i]<='9')
			{
				counti++;
			}
			else
			{
				if(maxcount<=counti) 
				{
					maxcount=counti;
					maxstart=starti;
				}
				break;
			}
		if(i==slen && maxcount<=counti)
		{
			maxcount=counti;
			maxstart=starti;
			break;
		}
		k=i;
	}
	//cout<<maxcount<<" "<<maxstart<<endl;

	if(maxcount==0) 
	{
		(*pOutputstr)[0]=0;
	    return 0;
	}
		for(i=maxstart;i<maxcount+maxstart;i++)
			(*pOutputstr)[i-maxstart]=intputstr[i];
		(*pOutputstr)[i-maxstart]=0;
		

//cout<<*pOutputstr<<endl;
	return maxcount;
}

int main()
{
	char *ss=NULL;
	Continumax(&ss, "hgjfgjfgjh");//
	return 0;
}


在字符串中找出连续最长的数字串

标签:

原文地址:http://blog.csdn.net/wljwsj/article/details/45369105

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!