2024-09-21
B. Vova and Trophies
题目描述
沃娃在不同的比赛中赢得了 n个奖杯。每个奖杯都是金色或银色的。奖杯排成一
排。这个排列的美妙之处在于由金色奖杯组成的最长子段的长度。沃瓦想交换两
个奖杯(不一定是相邻的),使排列尽可能美观,也就是说,使最长的奖杯子段的
长度最大。帮助沃瓦!告诉他,如果允许他最多交换一个奖杯,那么这个排列组
合的最大可能美度是多少?
输入
第一行包含一个整数n(2≤n≤105) - 奖杯数量。
如果第 i个字符是G,那么第i个奖杯就是金奖杯,否则就是银奖杯。
输出
如果允许 Vova 最多进行一次交换,则打印黄金奖杯子段的最大可能长度。
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int n = scanner.nextInt();
scanner.nextLine();
String s = scanner.nextLine();
int ans = 0;
int l = 0;
int r = 0;
int cntG = 0;
int cnt = 0;
while(r < n){
if(s.charAt(r) == 'G'){
cntG++;
}else{
cnt++;
}
while(cnt > 1){
cnt -= (s.charAt(l) != 'G' ? 1 : 0);
l++;
}
ans = Math.max(r - l + 1,ans);
r++;
}
System.out.println(Math.min(ans, cntG));
scanner.close();
}
}