本题要求删除部分字母,使得删除后的字符串 t 和原字符串 s 前 |t| 位相同。由于本题交换位置没有任何代价,我们只需要考虑删除多少是合适的。
要考虑删除多少,有点麻烦,因为我们需要先知道需要保留多少字母。那我们反过来,直接考虑会保留多少字母。
什么样的字母会被保留呢?我们无法改变 s 的顺序,我们修改 t 的,让其合法能保留下来。
当 s[i] = 1 的时候, t[i] 就必须为 0。
当 s[i] = 0 的时候, t[i] 就必须为 1。
那如果不够怎么办?比如,当 s[i] = 1 的时候已经没有多余的 0 可以交换过来。我们直接结束,因为当前位置不合法后续位置合法也无意义。