मान लीजिए कि हमारे पास एक स्ट्रिंग 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]