题解 | #复读姬#
复读姬
https://ac.nowcoder.com/acm/contest/102742/C
模拟
统计每一段连续相等的消息个数,如果间隔消息的两边消息相等,且间隔消息连续个数为一,则可以撤回
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);
}
}
深信服公司福利 775人发布
查看9道真题和解析