网易历届笔试题(10)

题目描述

小易很喜欢斑马,因为它们身上黑白相间的花纹。
一天小易得到了一串橡皮泥,这串橡皮泥只有黑色和白色,小易想把这串橡皮泥重新拼凑一下,让这个橡皮泥串中最长的连续的黑白相间的子串最长,但是小易有强迫症,所以他可以对橡皮泥串进行以下的操作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);
    }
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值