题目:
如果一个01串任意两个相邻位置的字符都是不一样的,我们就叫这个01串为交错01串。例如: “1”,”10101”,”0101010”都是交错01串。
小易现在有一个01串s,小易想找出一个最长的连续子串,并且这个子串是一个交错01串。小易需要你帮帮忙求出最长的这样的子串的长度是多少。
输入描述:
输入包括字符串s,s的长度length(1 ≤ length ≤ 50),字符串中只包含’0’和’1’
输出描述:
输出一个整数,表示最长的满足要求的子串长度。
输入例子1:
111101111
输出例子1:
3
分析:
只需要遍历字符串,判断相邻是否不同,统计并维持最大的不同值。
int main()
{
std::string myinput;
std::cin>>myinput;
int count = 1;
int result = 1;
char char_resu[50];
std::string my_resu;
for(int i = 0; i< myinput.size()-1; ++i)
{
if(myinput[i] != myinput[i+1])
{
count++;
char_resu[count - 2] = myinput[i];
char_resu[count-1] = myinput[i+1];
char_resu[count]='\0';
std::cout<<char_resu<<std::endl;
}
else
{
count = 1;
memset(char_resu,0,sizeof(char_resu));
// char_resu[0] = myinput[i];
char_resu[0] = myinput[i];
}
if(count > result)
{
result = count;
my_resu = char_resu;
}
// result = max(count,result);
}
std::cout<<result<<std::endl;
std::cout<<my_resu<<std::endl;
}