मान लीजिए कि हमारे पास दो तार S और T हैं, हमें यह जांचना है कि वे एक या शून्य संपादन दूरी दूर हैं या नहीं। एक संपादन ऑपरेशन को एक चरित्र को हटाने, एक चरित्र जोड़ने या किसी अन्य चरित्र के साथ एक चरित्र को बदलने के रूप में परिभाषित किया जा सकता है।
इसलिए, यदि इनपुट एस ="हैलो", टी ="हैलो" जैसा है, तो आउटपुट ट्रू होगा, क्योंकि इन दो स्ट्रिंग्स में 1 की संपादन दूरी है।
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
- m :=S का आकार, n :=T का आकार
- i :=0, j :=0
- गिनती :=0
- अगर |एम - एन|> 1, फिर
- झूठी वापसी
- जबकि मैं <एम और जे <एन, करते हैं
- यदि S[i], T[j] के समान नहीं है, तो
- यदि गिनती 1 के समान है, तो
- झूठी वापसी
- अगर एम <एन, तो
- j :=j + 1
- अन्यथा जब m> n, तब
- i :=i + 1
- अन्यथा,
- i :=i + 1, j :=j + 1
- गिनती :=गिनती + 1
- यदि गिनती 1 के समान है, तो
- अन्यथा,
- i :=i + 1, j :=j + 1
- यदि S[i], T[j] के समान नहीं है, तो
- सही लौटें
आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -
उदाहरण
class Solution: def solve(self, S, T): m, n = len(S), len(T) i, j = 0, 0 count = 0 if abs(m - n) > 1: return False while i < m and j < n: if S[i] != T[j]: if count == 1: return False if m < n: j += 1 elif m > n: i += 1 else: i += 1 j += 1 count += 1 else: i += 1 j += 1 return True ob = Solution() S = "hello" T = "hallo" print(ob.solve(S, T))
इनपुट
"hello", "hallo"
आउटपुट
True