题目如下:
如果一个01串任意两个位置的相邻的字符都是不一样的,就叫这个01串为交错01串,要求出一个最长的交错01子串,输入字符串s,和s的长度length。输出子串的长度。
做题思路如下:
1、这是一个动态规划问题,可以定义一个数组,长度为和s相同,存放到i为止的最长交错01子串长度;
2、到第i个元素为止的子串长度为:若i和i-1的值不一样,子串长度为i-1的子串长度加一,若值相同,子串长度为初始值1;
3、得到数组之后,取其中最大值即为所求的01交错子串的长度。
具体的c++代码如下:
#include <iostream>
#include<vector>
#include<string>
using namespace std;
int stringlenth(string &s,int length)
{
int i;
vector<int> res(length,1);
for(i=1;i<length;i++)
{
if(s[i]!=s[i-1])
{
res[i]=res[i-1]+1;
}
}
int maxlong=res[0];
for(i=1;i<length;i++)