求助一道字符串处理题目
题目如下:给定一个长度为n的,只含0和1的字符串。可对该字符串进行如下操作:
把这个这个串截出一部分连续的前缀(长度>=0),一部分连续的后缀(长度>=0),然后将它们水平翻转后,分别连回原串的“尾部”,“首部”。
操作前: ( a[0] ... a[i] ) a[i+1] ... a[j-1] ( a[j] ... a[n-1] )
操作后: ( a[n-1] ... a[j] ) a[i+1] ... a[j-1] ( a[i] ... a[0] )
注意: ( 0 <= i < j < n )
然后问:此串的子序列中最长的01010101...或10101010...串的长度是多少?(如果上述操作没有得到更好的答案,可不进行)
输入格式:
一个正整数n(2<=n<=1000000),下一行是1个长度为n只含0和1的字符串。
输出格式:
求得的最长的 01...或10...串的长度。
输入样例:
4
1010
6
100110
输出样例:
4
6
样例解释:
第1个样例不需要进行操作,最长的01或10串就是4
第2个样例(10)01(10) , 把括号中的串翻转后交换得到 (01)01(01)。
tips:分清楚子串和子序列的区别。