题目描述
小易很喜欢斑马,因为它们身上黑白相间的花纹。
一天小易得到了一串橡皮泥,这串橡皮泥只有黑色和白色,小易想把这串橡皮泥重新拼凑一下,让这个橡皮泥串中最长的连续的黑白相间的子串最长,但是小易有强迫症,所以他可以对橡皮泥串进行以下的操作0次或多次:
把橡皮泥串从某个地方切割开,将两个得到的两个串同时翻转,再拼接在一起。
这个橡皮泥串可能太长了,所以小易没有办法计算最终可以得到的最长的连续的黑白相间的子串的长度,希望你能帮他计算出这个长度。
输入描述:
一个字符串s,只包含字母'b'和字母'w',分别表示黑色和白色的橡皮泥块。 满足1 <= |s| <= 105,|s|代表字符串的长度。
输出描述:
一个整数,表示改变之后最长的连续的黑白相间的子串的长度。
示例1
输入
bwbwb
输出
5
示例2
输入
wwb
输出
3
思路:切割并同时旋转拼接相当于把切割后后面的子串放到前面 如wbwwb,切割wbw,wb后放前 -> wbwbw 与翻转(wbw,bw)后拼接结果一致,故将原字符串扩大2倍,找最长相间子串即可。
import java.util.*;
public class Main{
public static void main(String[] args){
String s;
Scanner in=new Scanner(System.in);
s=in.next();
int[] a=new int[2];
String ss=s+s;
int n=ss.length(),ans=0,sum=1;
for(int i=1;i<n;i++){
if(ss.charAt(i)!=ss.charAt(i-1))
sum++;
else
sum=1;
ans=Math.max(ans,sum);
}
System.out.println(ans);
}
}