CF1251C Minimize The Integer
题目描述
给定一个由 $n$ 位数字组成的巨大整数 $a$($n$ 的取值范围为 $1$ 到 $3 \cdot 10^5$,包含端点)。该整数可能包含前导零。
你可以交换相邻位置上的两个数字,当且仅当这两个数字的奇偶性不同(即它们除以 $2$ 的余数不同)。
例如,如果 $a = 032867235$,你可以通过一次操作得到以下整数:
- 如果交换第 $1$ 位和第 $2$ 位,可以得到 $302867235$;
- 如果交换第 $2$ 位和第 $3$ 位,可以得到 $023867235$;
- 如果交换第 $5$ 位和第 $6$ 位,可以得到 $032876235$;
- 如果交换第 $6$ 位和第 $7$ 位,可以得到 $032862735$;
- 如果交换第 $7$ 位和第 $8$ 位,可以得到 $032867325$。
注意,你不能交换第 $2$ 位和第 $4$ 位,因为它们不是相邻的。同样,你也不能交换第 $3$ 位和第 $4$ 位,因为这两个数字的奇偶性相同。
你可以进行任意次数(也可以为零)这样的操作。
请你求出能够得到的最小整数。
注意,结果整数也可能包含前导零。
输入格式
第一行包含一个整数 $t$($1 \le t \le 10^4$),表示测试用例的数量。
每个测试用例的一行包含一个整数 $a$,其长度 $n$ 满足 $1 \le n \le 3 \cdot 10^5$。
保证所有测试用例的 $n$ 之和不超过 $3 \cdot 10^5$。
输出格式
对于每个测试用例,输出一行,表示能够得到的最小整数。
说明/提示
在第一个测试用例中,你可以进行如下操作(被交换的数字用下划线和加粗表示):$0 \underline{\textbf{70}} 9 \rightarrow 0079$。
在第二个测试用例中,初始整数已经是最优的。
在第三个测试用例中,你可以进行如下操作:$246 \underline{\textbf{43}} 2 \rightarrow 24 \underline{\textbf{63}}42 \rightarrow 2 \underline{\textbf{43}} 642 \rightarrow 234642$。
由 ChatGPT 4.1 翻译