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: