Add algocode two pointers solution

This commit is contained in:
t0xa 2026-02-01 21:34:04 +03:00
parent 3544829d92
commit c90a267b68

View file

@ -0,0 +1,51 @@
"""
Дан список s, представляющий URL-адрес (буквы и пробелы). Нужно заменить все пробелы в первых k символах на %20, используя свободное место в конце списка и вернуть изменённый список s в качестве ответа.
Пример 1:
Ввод: s = ["h","e","l","l","o"," ","w","o","r","l","d","#","#"], k = 11
Вывод: ["h","e","l","l","o","%","2","0","w","o","r","l","d"]
Пример 2:
Ввод: s = ["a"," ","b"," ", " ", "c","#","#","#","#","#","#"], k = 6
Вывод: ["a","%","2","0","b","%","2","0","%","2","0", "c"]
Ограничения:
len(s) >= 1
"""
from typing import List
def solve(s: List[str], k: int) -> List[str]:
fast = len(s) - 1
slow = k - 1
while slow >= 0:
# Если у нас не пробел
if not s[slow] == " ":
s[fast] = s[slow]
fast -= 1
slow -= 1
# Если пробел
else:
s[fast] = "0"
s[fast-1] = "2"
s[fast-2] = "%"
fast -= 3
slow -= 1
print(s)
solve(s = ["h","e","l","l","o"," ","w","o","r","l","d","#","#"], k = 11)
# Вывод: ["h","e","l","l","o","%","2","0","w","o","r","l","d"]
solve(s = ["a"," ","b"," ", " ", "c","#","#","#","#","#","#"], k = 6)
# Вывод: ["a","%","2","0","b","%","2","0","%","2","0", "c"]
# 0 1 2 3 4 5 6 7 8 9 10 11 12
# "h","e","l","l","o"," ","w","o","r","l","d","#","#"
# s f
#
# 0 1 2 3 4 5 6 7 8 9 10 11 12
# "a"," ","b"," "," ","c","#","#","#","#","#","#"
# s