সমস্যা অনুসারে আমাদের একটি স্ট্রিং স্ট্র দেওয়া হয়েছে, আমাদের অবশ্যই প্রদত্ত স্ট্রিংয়ের সমস্ত সাবস্ট্রিং গণনা করতে হবে। সাবস্ট্রিং হল একটি স্ট্রিং যা ইতিমধ্যেই বিদ্যমান স্ট্রিংয়ের একটি অংশ যার আকার বিদ্যমান স্ট্রিংয়ের থেকে ছোট বা সমান হতে পারে।
আসুন উদাহরণের সাহায্যে সমস্যা এবং এর সমাধান বুঝি।
ইনপুট − str ="wxyz";
আউটপুট − স্বতন্ত্র সাবস্ট্রিংয়ের সংখ্যা হল:10
ব্যাখ্যা − গণনা করা স্বতন্ত্র সাবস্ট্রিং হল −
wxyz, wxy, wx, w, xyz, xy, x, yz, y, z so their count is 10
ইনপুট − str ="zzzz"
আউটপুট − স্বতন্ত্র সাবস্ট্রিংয়ের সংখ্যা হল:4
ব্যাখ্যা − গণনা করা স্বতন্ত্র সাবস্ট্রিং হল −
zzzz, zzz, zz, z
নিম্নলিখিত প্রোগ্রামে ব্যবহৃত পদ্ধতি
-
ইনপুট হিসাবে একটি স্ট্রিং স্ট্র নিন।
-
একটি খালি unordered_set "myset" ঘোষণা করুন।
-
লুপ i 0 থেকে 1 ধাপে সরান যতক্ষণ না i স্ট্রিংয়ের আকারের চেয়ে কম হয়।
-
একটি নতুন স্ট্রিং স্পেস "" (খালি) ঘোষণা করুন।
-
লুপ j থেকে শুরু করে i সময়ে 1 ধাপ সরে যায় যতক্ষণ না j স্ট্রিংয়ের আকারের চেয়ে কম হয়।
-
str[j>
দিয়ে প্রতিটি ধাপে স্থানের মান সংযুক্ত করুন -
মাইসেটে স্থান সন্নিবেশ করান।
-
-
একটি উত্তর হিসাবে str এর আকার প্রিন্ট করুন।
উদাহরণ
#include<iostream> #include<unordered_set> using namespace std; int main(){ string str = "aaaa"; unordered_set<string> myset; int i, j; for (i = 0; i < str.size(); ++i){ string space = ""; for (j = i; j < str.size(); ++j){ space = space + str[j]; myset.insert(space); } } cout <<"count of distinct substring is: " <<str.size(); return 0; }
আউটপুট
আমরা উপরের কোডটি চালালে আমরা নিম্নলিখিত আউটপুট পাব −
count of distinct substring is: 4