ধরুন আমাদের কাছে শব্দের একটি তালিকা এবং একটি স্ট্রিং s আছে, আমাদেরকে শব্দ তালিকায় স্ট্রিংগুলির সংখ্যা খুঁজে বের করতে হবে যেগুলি s-এর পরবর্তী।
সুতরাং, যদি ইনপুটটি শব্দের মত হয় =["xz", "xw", "y"] s ="xyz", তাহলে আউটপুট হবে 2, কারণ "xz" এবং "y" হল "xyz"-এর পরবর্তী অংশ।
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -
- উত্তর :=0
- d :=একটি খালি মানচিত্র
- শব্দে প্রতিটি শব্দের জন্য, করুন
- d[word[0]] এর শেষে শব্দ ঢোকান
- s-এ প্রতিটি c-এর জন্য, করুন
- l :=d[c]
- d[c] :=একটি নতুন তালিকা
- l-এর প্রতিটি শব্দের জন্য, কর
- শব্দের আকার 1 হলে,
- উত্তর :=উত্তর + ১
- অন্যথায়,
- d[word[1]] এর শেষে [সূচী 1 থেকে শেষ পর্যন্ত] শব্দের সাবস্ট্রিং সন্নিবেশ করুন
- শব্দের আকার 1 হলে,
- উত্তর ফেরত দিন
আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -
উদাহরণ
from collections import defaultdict class Solution: def solve(self, words, s): ans = 0 d = defaultdict(list) for word in words: d[word[0]].append(word) for c in s: l = d[c] d[c] = [] for word in l: if len(word) == 1: ans += 1 else: d[word[1]].append(word[1:]) return ans ob = Solution() words = ["xz", "xw", "y"] s = "xyz" print(ob.solve(words, s))
ইনপুট
["xz", "xw", "y"], "xyz"
আউটপুট
2