मान लीजिए कि हमारे पास शब्दों नामक लोअरकेस स्ट्रिंग्स की एक सूची है जहां प्रत्येक शब्द समान लंबाई का है। हमें यह जांचना होगा कि क्या दो तार हैं जो केवल एक वर्ण में भिन्न हैं।
इसलिए, यदि इनपुट शब्द =["बीज", "पिक", "लिक", "रूट", "लाइव"] जैसा है, तो आउटपुट ट्रू होगा, क्योंकि "पिक" और "लिक" लगभग समान हैं।
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
- s :=एक नया सेट
- शब्दों में प्रत्येक शब्द के लिए, करें
- शब्द में प्रत्येक अनुक्रमणिका i और शब्द w के लिए, करें
- यदि शब्द का स्थानापन्न [सूचकांक 0 से i - 1] संयोजन "*" शब्द [सूचकांक i + 1 से अंत तक] संयोजन s में मौजूद है, तो
- सही लौटें
- अन्यथा,
- सम्मिलित करें (शब्द [सूचकांक 0 से i-1 तक] "*" शब्द को संयोजित करें [सूचकांक i + 1 से अंत तक]) को s में जोड़ें
- यदि शब्द का स्थानापन्न [सूचकांक 0 से i - 1] संयोजन "*" शब्द [सूचकांक i + 1 से अंत तक] संयोजन s में मौजूद है, तो
- शब्द में प्रत्येक अनुक्रमणिका i और शब्द w के लिए, करें
- झूठी वापसी
उदाहरण
आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -
def solve(words): s = set() for word in words: for i, w in enumerate(word): if word[:i] + "*" + word[i + 1 :] in s: return True else: s.add(word[:i] + "*" + word[i + 1 :]) return False words = ["seed", "pick", "lick", "root", "live"] print(solve(words))
इनपुट
["seed", "pick", "lick", "root", "live"]
आउटपुट
True