asdvvvv

69 阅读1分钟

vdcvddsx小U拥有一个由0和1组成的字符串,她可以进行最多k次操作,每次操作可以交换相邻的两个字符。目标是通过这些操作,使得最终得到的字符串字典序最小。

例如,小U当前有一个字符串 01010,她最多可以进行 2 次相邻字符交换操作。通过这些操作,她可以将字符串调整为 00101,这是可以通过不超过2次操作得到的字典序最小的字符串。

现在,小U想知道,经过最多k次操作后,能够得到的字典序最小的字符串是什么。


测试样例

样例1:

输入:n = 5, k = 2, s = "01010"
输出:'00101'

样例2:

输入:n = 7, k = 3, s = "1101001"
输出:'0110101'

样例3:

输入:n = 4, k = 1, s = "1001"
输出:'0101'

Python

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

            j = i

            while j > 0 and k > 0 and s[j - 1] == '0':

                # 交换相邻的两个字符

                s[j], s[j - 1] = s[j - 1], s[j]

                j -= 1

                k -= 1

    

    # 将列表转换回字符串

    return ''.join(s)

if name == 'main':

    print(solution(5, 2, "01010") == '00101')

    print(solution(7, 3, "1101001") == '0110101')

    print(solution(4, 1, "1001") == '0101')

    查看答案代码

1

def solution(n: int, k: int, s: str) -> str:

MarsCode AI

MarsCode AI

AI 思考中...