কম্পিউটার

ভেক্টর ব্যবহার করে স্ট্রিং ম্যাচিং বাস্তবায়নের জন্য C++ প্রোগ্রাম


এটি আরেকটি স্ট্রিং ম্যাচিং পদ্ধতি। এই পদ্ধতিতে, আমরা ভেক্টর ব্যবহার করে একটি সাবস্ট্রিং অনুসন্ধান করছি।

C++ এ আমরা স্ট্যান্ডার্ড লাইব্রেরি ব্যবহার করে সহজেই ভেক্টর তৈরি করতে পারি। আমরা মেইন স্ট্রিং এবং স্ট্রিং নিচ্ছি যেটিকে ভেক্টর হিসেবে সার্চ করা হবে, তারপর মেইন স্ট্রিংয়ে সার্চ করছি। যখন একটি মিল পাওয়া যায় তখন ফাংশন ঠিকানাটি ফেরত দেয় এবং এটি প্রধান স্ট্রিং থেকে সরিয়ে দেয়। তাই পরবর্তী পুনরাবৃত্তিতে, এটি অবস্থান 0 থেকে শুরু হয় এবং আবার অনুসন্ধান করে।

একাধিক ঘটনার জন্য, আমরা লুপ ব্যবহার করছি এবং বারবার ম্যাচের জন্য অনুসন্ধান করছি এবং অবস্থানটি ফিরিয়ে দিচ্ছি।

Input: Main String: “ABAAABCDBBABCDDEBCABC”, Pattern “ABC”
Output: Pattern found at position: 4
Pattern found at position: 10
Pattern found at position: 18

অ্যালগরিদম

ভেক্টর_প্যাটার্ন_অনুসন্ধান(প্রধান, সাবস্ট্র)

ইনপুট − মূল পাঠ্য এবং সাবস্ট্রিং৷

আউটপুট − অবস্থান যেখানে প্যাটার্ন পাওয়া যায়

Begin
   p := starting point of the main string
   while r is not at the end of substr and p is not at the end of main, do
      r := starting of substr
      while item at position p & r are not same, and p in main, do
         p := p + 1
         i := i + 1
      done
      q := p
      while item at pos p & r are same, and r in substr and p in main, do
         p := p + 1
         i := i + 1
         r := r + 1
      done
      if r exceeds the substr, then
         delete first occurrence of substr from main
         return the position where substr is found

      if p exceeds main string, then
         return 0
         q := q + 1
         p := q
   done
End

উদাহরণ কোড

#include <iostream>
#include <string>
#include <vector>
using namespace std;

void take_string(vector<char> &string){
   char c;
   while(true){
      c = getchar();
      if(c == '\n'){
         break;
      }
      string.push_back(c);
   }
}

void display(vector<char> string){
   for(int i = 0; i<string.size(); i++){
      cout << string[i];
   }
}

int match_string(vector<char>& main, vector<char> substr){
   vector<char>::iterator p,q, r;
   int i = 0;

   p = main.begin();

   while (r <= substr.end() && p <= main.end()){
      r = substr.begin();
      while (*p != *r && p < main.end()){
         p++;
         i++;
      }
      q = p;

      while (*p == *r && r <= substr.end() && p<=main.end()){
         p++;
         i++;
         r++;
      }

      if (r >= substr.end()){
         main.erase(main.begin(), q + 1);
         return (i - substr.size() + 1);
      }

      if (p >= main.end())
         return 0;
         p = ++q;
   }
}

আউটপুট

Enter main String: C++ is programming language. It is object oriented language
Enter substring to find: language

Match found at Position = 20
Match found at Position = 52

  1. অ্যারে ব্যবহার করে সারি বাস্তবায়নের জন্য C++ প্রোগ্রাম

  2. লিঙ্ক করা তালিকা ব্যবহার করে স্ট্যাক বাস্তবায়নের জন্য C++ প্রোগ্রাম

  3. অ্যারে ব্যবহার করে স্ট্যাক বাস্তবায়নের জন্য C++ প্রোগ্রাম

  4. C++ প্রোগ্রাম Recursion ব্যবহার করে একটি বাক্যকে বিপরীত করতে