কম্পিউটার টিউটোরিয়াল

ইটারেটিভ মেথড ব্যবহার করে স্ট্রিংয়ের সব সাবসিকোয়েন্স প্রিন্ট করা C++-তে


এই সমস্যায়, একটি স্ট্রিং দেওয়া থাকে এবং আমাদের দেওয়া স্ট্রিং থেকে সাবস্ট্রিং খুঁজে বের করতে হবে। খুঁজে বের করার সাবস্ট্রিংটি স্বরবর্ণ দিয়ে শুরু হবে এবং ব্যঞ্জনবর্ণ দিয়ে শেষ হবে।

একটি স্ট্রিং হলো ক্যারেক্টারদের একটি অ্যারে।

এই সমস্যায় জেনারেট করা সাবস্ট্রিংটি স্ট্রিংয়ের কিছু ক্যারেক্টার ডিলিট করে তৈরি করা যায়। এবং স্ট্রিংয়ের অর্ডার পরিবর্তন ছাড়া।

ইনপুট: 'abc' আউটপুট: ab, ac, abc

এই সমস্যাটি সমাধান করতে, আমরা স্ট্রিংটি ইটারেট করব এবং स्वरবর্ণ ফিক্স করব এবং পরবর্তী সিকোয়েন্স চেক করব। একটি অ্যালগরিদম দেখা যাক:

অ্যালগরিদম

ধাপ ১: স্ট্রিংয়ের প্রতিটি ক্যারেক্টার ইটারেট করুন, ভেরিয়েবল i দিয়ে। ধাপ ২: যদি i-তম ক্যারেক্টার स्वरবর্ণ হয়। ধাপ ৩: যদি j-তম ক্যারেক্টার ব্যঞ্জনবর্ণ হয়। ধাপ ৪: হ্যাশসেটে যোগ করুন, ১ম ক্যারেক্টার থেকে j-তম ক্যারেক্টার পর্যন্ত সাবস্ট্রিং। ধাপ ৫: নিচের ধাপগুলো পুনরাবৃত্তি করে স্ট্রিং থেকে সাবস্ট্রিং খুঁজে বের করুন।

ইটারেটিভ পদ্ধতিতে, আমরা পুরো স্ট্রিং এর ওপর ইটারেট করব। ১ থেকে 2^(length(string))-1 পর্যন্ত।

C++ উদাহরণ

#include <bits/stdc++.h> using namespace std; string subString(string s, int binary){ string sub = ""; int pos; while(binary>0){ pos=log2(binary&-binary)+1; sub=s[pos-1]+sub; binary= (binary & ~(1 << (pos-1))); } reverse(sub.begin(),sub.end()); return sub; } void findAllSubStrings(string s){ map<int, set<string> > sorted_subsequence; int len = s.size(); int limit = pow(2, len); for (int i = 1; i <= limit - 1; i++) { string sub = subString(s, i); sorted_subsequence[sub.length()].insert(sub); } for (auto it : sorted_subsequence) { for (auto ii : it.second) cout<<ii<<" "; cout<<"\t"; } } int main() { string s = "wxyz"; cout<<"The substring are :\n"; findAllSubStrings(s); return 0; }

আউটপুট

সাবস্ট্রিংগুলো হলো:

w x y z wx wy wz xy xz yz wxy wxz wyz xyz wxyz
  1. C++-এ স্ট্রিংয়ের সব স্বতন্ত্র অক্ষল ক्रमানুসারে প্রিন্ট করা

  2. C++-এ একটি স্ট্রিং থেকে সব ফানি ওয়ার্ড প্রিন্ট করা

  3. C++-এ বাইনারি ট্রির সব লিফ নোড বাম থেকে ডান ইটেরেটিভ পদ্ধতিতে প্রিন্ট করা

  4. C++-এ n-এরি ট্রির সব লিফ নোড DFS দিয়ে প্রিন্ট করা