求助,浪潮的C++编程题

01序列交替序列问题

输入一个只含有0和1的序列,翻转某个连续范围的序列,求最大的01交替子序列;

注:翻转是指:0变成1;1变成0;
01交替子序列 可以不连续;比如0101001的(没有翻转的)最大交替子序列是 010101,长度为6 
翻转以后的最大交替子序列是0101010,长度为7

例:
输入:010001001
输出:8
求大佬的思路;


#浪潮2021提前批##浪潮##笔试题目#
全部评论
自己苦思冥想,给直接输出了一个5 ,通过了45%的测试用例😂。 下面是我后来想法,不知道对不对;
点赞 回复 分享
发布于 2020-07-08 17:13
老哥,这道题是要求“交替序列”还是“交替子序列”?需要连续吗?
点赞 回复 分享
发布于 2020-07-08 18:00
浪潮不面也罢
点赞 回复 分享
发布于 2020-07-08 18:13
int MaxSubLength(string&str){     int len=str.length();     int res=0;     if(str[1]!=str[0])         ++res;     for(int i=1;i<len-1;++i){         if(str[i]!=str[i-1]||str[i]!=str[i+1]){             ++res;             cout<<str[i]<<endl;         }     }     if(str[len-1]!=str[len-2])         ++res;     return res; }
点赞 回复 分享
发布于 2020-07-08 21:06

相关推荐

1 4 评论
分享
牛客网
牛客企业服务