编程题
### 问题描述 小然是一名资深的密码解码师,他在研究一种神秘的二进制密码。这种密码由长度为 $N$ 的二进制字符串 $S$ 组成,其中只包含数字 $0$ 和 $1$。小然发现了一种操作可以帮助他解密: - 选择字符串 $S$ 的任意子字符串; - 从 $S$ 中移除选中的子字符串; - 将剩余部分拼接起来。 小然想找出通过最多执行一次上述操作,能得到的最长的全 $1$ 前缀长度。 注意:字符串的前缀是通过删除字符串末尾的一些(可能为零)字符得到的。 ### 输入格式 第一行输入一个整数 $T$,表示测试用例的数量。 每个测试用例包含两行: - 第一行输入一个整数 $N$,表示二进制字符串的长度。 - 第二行输入一个长度为 $N$ 的二进制字符串 $S$。 ### 输出格式 对于每个测试用例,输出一个整数,表示通过最多执行一次操作后,能得到的最长的全 $1$ 前缀长度。 ### 样例输入 ```text 3 4 1010 6 011011 11 01011011101 ``` ### 样例输出 ```text 2 2 3 ``` ### 说明 - 在第一个测试用例中,小然可以选择子字符串 $S[2,2]=0$。移除子字符串后,剩余部分为 $1$ 和 $10$。拼接这些部分,得到的最终字符串为 $110$。最终字符串中最长的全 $1$ 前缀为 $11$,长度为 $2$。 - 在第二个测试用例中,小然可以选择子字符串 $S[1,4]=0110$。移除子字符串后,剩余部分为 $11$。最终字符串中最长的全 $1$ 前缀为 $11$,长度为 $2$。 - 在第三个测试用例中,小然可以选择子字符串 $S[1,6]=010110$。移除子字符串后,剩余部分为 $11101$。最终字符串中最长的全 $1$ 前缀为 $111$,长度为 $3$。 ### 评测数据范围 $1 \leq T \leq 1000$。 $2 \leq N \leq 2 \times 10^5$。 在所有测试用例中,$N$ 的总和不超过 $2 \times 10^5$。
查看答案
赣ICP备20007335号-2