ধরুন আমাদের কাছে শব্দ বলা ছোট হাতের স্ট্রিংগুলির একটি তালিকা রয়েছে যেখানে প্রতিটি শব্দ একই দৈর্ঘ্যের। আমাদের পরীক্ষা করতে হবে এমন দুটি স্ট্রিং আছে যা শুধুমাত্র একটি অক্ষরের মধ্যে আলাদা।
সুতরাং, যদি ইনপুটটি শব্দের মত হয় =["বীজ", "পিক", "লিক", "রুট", "লাইভ"], তাহলে আউটপুট হবে True, যেহেতু "pick" এবং "lick" প্রায় একই।
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -
- s :=একটি নতুন সেট
- শব্দে প্রতিটি শব্দের জন্য, করুন
- প্রতিটি সূচক i এবং শব্দের w শব্দের জন্য, করুন
- যদি [সূচী 0 থেকে i - 1 পর্যন্ত] শব্দের সাবস্ট্রিং [সূচী 0 থেকে i - 1] concatenate "*" concatenate শব্দ [index i + 1 থেকে শেষ পর্যন্ত] s থাকে, তাহলে
- সত্য ফেরান
- অন্যথায়,
- সন্নিবেশ করান (শব্দ [সূচী ০ থেকে i-1 পর্যন্ত] সংযুক্ত করুন "*" সংযোজিত শব্দ [সূচি i + 1 থেকে শেষ পর্যন্ত]) s এ
- যদি [সূচী 0 থেকে i - 1 পর্যন্ত] শব্দের সাবস্ট্রিং [সূচী 0 থেকে i - 1] concatenate "*" concatenate শব্দ [index 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