একটি স্ট্রিং s এবং ক্যারেক্টার c (যে s-তে আছে) দেওয়া আছে। প্রতিটি ইন্ডেক্স i-এর জন্য s[i]-এর c-থেকে নিকটতম দূরত্ব বের করে লিস্ট রিটার্ন করুন।
উদাহরণ
s = "ppqppq", c = "q" → আউটপুট: [2, 1, 0, 1, 1, 0]
এলগরিদম (টু-পাস / ফরওয়ার্ড-ব্যাকওয়ার্ড)
j := len(s), d := [j-1]*jx := s.index(c)for i in range(j):- যদি
s[i]==c and i>x:x:=i, বামদিকে আপডেট করুন। d[i] := abs(x - i)
- যদি
dরিটার্ন করুন।
পাইথন কোড
def solve(s, c):
j = len(s)
d = [j - 1] * j
x = s.index(c)
for i in range(j):
if s[i] == c and i > x:
x = i
ind = 1
while True:
if d[x - ind] > ind:
d[x - ind] = ind
else:
break
ind += 1
d[i] = abs(x - i)
return d
s = "ppqppq"
c = "q"
print(solve(s, c)) # আউটপুট: [2, 1, 0, 1, 1, 0]
ইনপুট / আউটপুট
"ppqppq", "q" [2, 1, 0, 1, 1, 0]