[编程题]字符串中找出连续最长的数字串

链接:https://www.nowcoder.com/questionTerminal/bd891093881d4ddf9e56e7cc8416562d?orderByHotValue=0&page=1&onlyReference=false
来源:牛客网

读入一个字符串str,输出字符串str中的连续最长的数字串

输入描述:

个测试输入包含1个测试用例,一个字符串str,长度不超过255。

输出描述:

在一行内输出str中里连续最长的数字串。

示例1

输入

abcd12345ed125ss123456789

输出

123456789

思路1: 利用常规手段,从起始位置开始寻找,找到数字串之后存下来,和保存的最长数字串长度进行比较,保留最大的,直到超过字符串的size。代码较为简单,就不贴出来了。

思路2:利用动态规划实现

开辟二维数组进行存放当前字符串中最长数字串的个数,找到最长的数字串之后将其截取出来。

代码及注释如下:

#include 
#include 
using namespace std;


int main()
{
	string s;
	while (getline(cin,s))
	{
		int len = s.size();
		vector> vv;
		vv.resize(len);
		for (int i = 0; i max)//每次看是否需要更新max
				{
					max = vv[i][j];
					index = i - max + 1;//记录当前数字串的起始下标
				}
			}
		}
        //截取最长的字符串
		string ret = s.substr(index, max);
		cout << ret << endl;
	}
	return 0;
}

 

你可能感兴趣的:(C++,剑指offer)