题解 | #复读姬#

复读姬

https://ac.nowcoder.com/acm/contest/102742/C

模拟

统计每一段连续相等的消息个数,如果间隔消息的两边消息相等,且间隔消息连续个数为一,则可以撤回

alt


public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int n=scanner.nextInt();
        String[] s=new String[n+1];
        for (int i = 0; i < n; i++) {
            s[i]=scanner.next();
        }
        s[n]="A";
        List<String> list1=new ArrayList<>();
        List<Integer> list2=new ArrayList<>();
        int count=1;
        for (int i = 1; i < n+1; i++) {
            if(s[i].equals(s[i-1])){
                count++;
            }else {
                list1.add(s[i-1]);
                list2.add(count);
                count=1;
            }
        }
        int max=0;
        for (int i = 0; i < list1.size()-2; i++) {
            if(list1.get(i).equals(list1.get(i+2))&&list2.get(i+1)==1){
                max=Math.max(max,list2.get(i)+list2.get(i+2));
            }
            max=Math.max(max,list2.get(i));
        }
        if(list1.size()>1){
            max=Math.max(list2.get(list1.size()-2),max);
        }
        max=Math.max(list2.get(list1.size()-1),max);
        System.out.println(max);
    }
}
全部评论

相关推荐

迷茫的大四🐶:都收获五个了,兄弟那还说啥,不用改了,去玩吧
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务