编程题
### 问题描述 在一个神秘的数字世界中,小然得到了一个长度为 $N$ 的二进制代码字符串 $S$。 他可以进行如下的操作: - 选择一个整数 $i$($1 \leq i \leq N-2$),将子串 $S_i S_{i+1} S_{i+2}$ 替换为 "100"。 他发现,经过操作后的代码字符串可能有多种,但他想得到字典序最小的代码字符串。请你帮助小然计算出,他可以得到的字典序最小的代码字符串是什么。 注意:字符串 $X$ 的字典序小于字符串 $Y$,当且仅当 $X_i < Y_i$,其中 $i$ 是 $X$ 和 $Y$ 第一个不同字符的位置。 ### 输入格式 第一行输入一个整数 $T$,表示测试用例的数量。 每个测试用例包含两行: - 第一行输入一个整数 $N$,表示二进制代码字符串 $S$ 的长度。 - 第二行输入一个长度为 $N$ 的二进制代码字符串 $S$。 ### 输出格式 对于每个测试用例,输出一个字符串,表示字典序最小的代码字符串。 ### 样例输入 ```markdown 2 3 110 4 0001 ``` ### 样例输出 ```markdown 100 0001 ``` ### 说明 样例中的第一个测试用例:你可以将 "110" 变为 "100"。因为 "100" 的字典序小于 "110",所以输出 "100"。 样例中的第二个测试用例:你应该保持 "0001" 不变,不进行任何操作,所以输出 "0001"。 ### 评测数据范围 对于所有的测试用例,满足 $1 \leq T \leq 10^5$。 对于所有的测试用例,满足 $3 \leq N \leq 3 \times 10^5$。 所有测试用例中 $N$ 的和不超过 $3 \times 10^5$
查看答案
赣ICP备20007335号-2