天天看點

每日一題——在字元串中找出連續最長的數字串源碼

在字元串中找出連續最長的數字串

在字元串中找出連續最長的數字串

時間限制:3秒

空間限制:32768K

題目描述

請一個在字元串中找出連續最長的數字串,并把這個串的長度傳回;如果存在長度相同的連續數字串,傳回最後一個連續數字串;

注意:數字串隻需要是數字組成的就可以,并不要求順序,比如數字串“1234”的長度就小于數字串“1359055”,如果沒有數字,

則傳回空字元串(“”)而不是NULL!(說明:不需要考慮負數)

輸入描述 :

字元串輸出描述:

連續數字串&在所有數字串最長的長度

示例1

輸入

abcd12345ed125ss123058789

輸出

123058789

9

源碼

/********************************************************************************************

在字元串中找出連續最長的數字串
時間限制:3秒
空間限制:32768K

題目描述
請一個在字元串中找出連續最長的數字串,并把這個串的長度傳回;如果存在長度相同的連續數字串,傳回最後一個連續數字串;
注意:數字串隻需要是數字組成的就可以,并不要求順序,比如數字串“1234”的長度就小于數字串“1359055”,如果沒有數字,
則傳回空字元串(“”)而不是NULL!(說明:不需要考慮負數)
輸入描述 :
字元串輸出描述:
連續數字串&在所有數字串最長的長度
示例1
	輸入
	abcd12345ed125ss123058789
	輸出
123058789
9
********************************************************************************************/
#include <iostream>
#include <string>
using namespace std;


int main()
{
	string srt = { "abcd155555555555552345ed125ss123058789" };
	int len_max = 0;
	int len0 = 0;
	int index = 0;
	for (int i = 0; i < srt.size(); i++)
	{
		if (srt[i] >= '0'&& srt[i] <= '9')
		{
			len0++;
			if (len0 > len_max)
			{
				index = i;
				len_max = len0;
			}
		}
		else
		{
			len0 = 0;
		}
	}
	index = index- len_max+1;
	for (int i = index; i < index+ len_max; i++)
	{
		printf("%c", srt[i]);
	}
	if (len_max == 0)
	{
		printf("數字字元串為空\n");
		printf(" ");
	}
	printf("\n");
	printf("len_max=%d", len_max);
	printf("len_max=%d", len_max);


}

           
c