标准答案是:如果全0,输出0,如果全1,输出n,其它输出n-1。
我没有想到官方题解中的这个解法,所以是老老实实做变换的。
但我不明白为何会WA,按理说我的解法的最终输出应该也是正确的:
全0或全1时,由于始终不符合if条件,未做任何变换,所以sum是0或n
其它情况,在进入if后,会被改写成“110”
那么下一位就是“10X”,必然再次进入if
如此往复递推,直到整个数列只剩末尾的0,即“11......10”,输出n-1
所以我不明白为何WA了,有没有办法看一下用例?
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int t=in.nextInt();
while(t-->0){
in.nextInt();
char[] cs=in.next().toCharArray();
int[] array=new int[cs.length];
for(int i=0;i<array.length;i++) array[i]=cs[i]&1;
for(int i=0;i<array.length-2;i++){
int sum=array[i]+array[i+1]+array[i+2];
if(sum==1||sum==2){
array[i]=1;
array[i+1]=1;
array[i+2]=0;
}
}
int sum=0;
for(int i=0;i<array.length;i++) sum+=array[i];
System.out.println(sum);
}
}
}
全部评论
(0) 回帖