ধরুন আমাদের একটি স্ট্রিং s এবং আরেকটি অক্ষর c, s তে অবশ্যই c উপস্থিত থাকতে হবে, আমাদের একটি তালিকা খুঁজে বের করতে হবে যার দৈর্ঘ্য s এর দৈর্ঘ্যের সমান যেখানে প্রতিটি সূচক i এর জন্য এর মানটি s[i] এর নিকটতম দূরত্ব নির্ধারণ করা হয়েছে গ.
সুতরাং, যদি ইনপুট s ="ppqppq" c ="q" এর মত হয়, তাহলে আউটপুট হবে [2, 1, 0, 1, 1, 0]
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -
-
j :=s এর আকার
-
d :=[j - 1] * j
-
x :=s
এ c এর সূচক -
আমি 0 থেকে j - 1 রেঞ্জের জন্য, কর
-
যদি s[i] c এবং i> x এর মত হয়, তাহলে
-
x :=i, ind :=1
-
নিচের মাধ্যমে লুপ করুন, করুন
-
যদি d[x - ind]> ind, তাহলে
-
d[x - ind] :=ind
-
-
অন্যথায়,
-
লুপ থেকে বেরিয়ে আসুন
-
-
ind :=ind + 1
-
-
-
d[i] :=|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)) ইনপুট
"ppqppq", "q"
আউটপুট
[2, 1, 0, 1, 1, 0]