ধরুন আমাদের একটি স্ট্রিং s আছে, আমাদের s-এর স্বতন্ত্র অ-খালি সাবস্ট্রিংগুলির সংখ্যা খুঁজে বের করতে হবে।
সুতরাং, যদি ইনপুটটি s ="abaa" এর মতো হয়, তাহলে আউটপুট হবে 8 কারণ, সাবস্ট্রিংগুলি হল ["a", "b", "ab", "ba", "aa", "aba", " baa", "abaa"]।
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -
- trie :=একটি নতুন মানচিত্র
- n :=s এর আকার
- আমি 0 থেকে n - 1 রেঞ্জের জন্য, কর
- curr :=trie i থেকে n - 1 রেঞ্জে j-এর জন্য
- করুন
- c :=s[j]
- যদি c curr-এ না থাকে, তাহলে
- curr[c] :=একটি নতুন মানচিত্র
- curr :=curr[c]
- curr["*"] :=সত্য
- q :=একটি সারি তৈরি করুন এবং ট্রাই সন্নিবেশ করুন
- উত্তর :=0
- যখন q অ-খালি, do
- উত্তর :=উত্তর + ১
- t :=q এর বাম আইটেম, এবং q থেকে এই আইটেমটি মুছে দিন টি-তে প্রতিটি c-এর জন্য
- করুন
- যদি c "*" এর মত না হয়, তাহলে
- q এর শেষে t[c] ঢোকান
- যদি c "*" এর মত না হয়, তাহলে
- উত্তর ফেরত দিন - 1
উদাহরণ
আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -
from collections import deque def solve(s): trie = {} n = len(s) for i in range(n): curr = trie for j in range(i, n): c = s[j] if c not in curr: curr[c] = {} curr = curr[c] curr["*"] = True q = deque([trie]) ans = 0 while q: ans += 1 t = q.popleft() for c in t: if c != "*": q.append(t[c]) return ans - 1 s = "abaa" print(solve(s))
ইনপুট
"abaa"
আউটপুট
8