মনে করুন, আমাদের একটি সাবস্ট্রিং দেওয়া আছে जिसे 's' দ্বারা চিহ্নিত করা হয়। আমাদের ইউনিক সাবস্ট্রিংগুলো খুঁজে বের করে তাদের সংখ্যা আউটপুট হিসেবে রিটার্ন করতে হবে।
যেমন, ইনপুট s = 'prrstvt' হলে, আউটপুট হবে ২৬।
স্বতন্ত্র সাবস্ট্রিংগুলো হবে:
'pr', 'rrs', 'st', 'rr', 'tv', 'rstv', 'stvt', 'prrstv', 'prrstvt', 'rrstvt', 's', 'prrst', 'stv', 'rrstv', 'rst', 'v', 'tvt', 'rstvt', 'r', 'rs', 'vt', 't', 'prr', 'p', 'rrst', এবং 'prrs'।
সমাধান পদ্ধতি
এই সমস্যাটি সমাধান করতে নিচের ধাপগুলো অনুসরণ করুন:
- visited := একটি নতুন ম্যাপ
- s-এ থাকা প্রতিটি index ind এবং value let-এর জন্য
- temp := একটি নতুন সেট
- যদি ind-1 visited-এ থাকে, তবে
- visited[ind-1]-এ থাকা প্রতিটি has_let-এর জন্য
- (has_let + let) কে temp-এ অ্যাড করুন
- visited[ind-1]-এ থাকা প্রতিটি has_let-এর জন্য
- let কে temp-এ অ্যাড করুন
- visited[ind] := temp
- res := একটি নতুন সেট
- visited-এ থাকা প্রতিটি sets-এর জন্য
- visited[sets] কে res-এ অ্যাড করুন
- res-এর সাইজ রিটার্ন করুন
উদাহরণ
নিচের ইমপ্লিমেন্টেশনটি দেখুন আরও ভালো বোঝার জন্য:
def solve(s): visited = dict() for ind, let in enumerate(s): temp = set() if ind-1 in visited: for has_let in visited[ind-1]: temp.add(has_let+let) temp.add(let) visited[ind] = temp res = set() for sets in visited: res.update(visited[sets]) return len(res) print(solve('prrstvt'))ইনপুট
'prrstvt'
আউটপুট
26