ধরুন, আমাদেরকে 's' দ্বারা চিহ্নিত একটি সাবস্ট্রিং দেওয়া হয়েছে। আমাদের অনন্য সাবস্ট্রিংগুলি খুঁজে বের করতে হবে এবং আউটপুট হিসাবে এই সাবস্ট্রিংগুলির সংখ্যা ফেরত দিতে হবে৷
সুতরাং, ইনপুট যদি s ='prrstvt' এর মত হয়, তাহলে আউটপুট হবে 26।
স্বতন্ত্র সাবস্ট্রিং হবে −
'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'।
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -
- পরিদর্শন করেছেন :=একটি নতুন মানচিত্র
- প্রতিটি সূচকের জন্য ind, এবং মান s, do
- temp :=একটি নতুন সেট
- যদি ind-1 পরিদর্শন করা হয়, তাহলে
- প্রত্যেক has_let পরিদর্শন করা [ind-1] এর জন্য, করুন
- তালিকা টেম্পে (has_let + let) যোগ করুন
- প্রত্যেক has_let পরিদর্শন করা [ind-1] এর জন্য, করুন
- তালিকায় যোগ করুন(চলুন)
- পরিদর্শন [ইন্ড] :=টেম্প
- res :=একটি নতুন সেট
- পরিদর্শন করা প্রতিটি সেটের জন্য, করুন
- res এ যোগ করুন(ভিজিট করা[সেট])
- রেসের রিটার্ন সাইজ
উদাহরণ
আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -
def solve(s):visited =dict() ind এর জন্য, আসুন গণনা করি: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 =সেট() পরিদর্শন করা সেটগুলির জন্য:res.update(visited[sets]) len(res)print(solve('prrstvt'))প্রে>ইনপুট
'prrstvt'আউটপুট
26