मान लीजिए कि हमारे पास एक स्ट्रिंग s और एक अन्य वर्ण c है, c को s में मौजूद होना चाहिए, हमें एक सूची ढूंढनी होगी, जिसकी लंबाई s की लंबाई के समान हो, जहां प्रत्येक इंडेक्स i के लिए इसका मान s [i] से निकटतम दूरी निर्धारित किया गया हो। ग.
इसलिए, यदि इनपुट s ="ppqppq" c ="q" जैसा है, तो आउटपुट [2, 1, 0, 1, 1, 0]
होगा।इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
-
j :=s का आकार
-
डी:=[जे -1] * जे
-
x :=s में c का सूचकांक
-
मैं के लिए 0 से j-1 की सीमा में, करो
-
यदि s[i] c और i> x के समान है, तो
-
एक्स:=मैं, इंडस्ट्रीज़:=1
-
निम्नलिखित के माध्यम से लूप करें, करें
-
यदि d[x - ind]> ind, तो
-
d[x - 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]